release version 1.01
[perl/file-rewrite.git] / t / 10-fileset.t
index fd8d6d572b93aa88496fa347fdfe7204392b0b91..9e78b11ab620642af1f78c4cf4ee287cb077f75f 100644 (file)
@@ -10,7 +10,7 @@ use autodie;
 use File::Temp qw(tempdir);
 use File::Path qw(remove_tree);
 
-BEGIN { use_ok('File::Rewrite', 'fileset'); }
+BEGIN { use_ok('File::Rewrite', 'fileset') or BAIL_OUT('No fileset()'); }
 
 my $target = tempdir();
 
@@ -32,11 +32,13 @@ sub testfileset {
                if ($compare ne $output) {
                        fail($name);
                        diag(sprintf(
-                               'output mismatch (got %d of %d lines with return value %s)',
+                               '  Output mismatch (got %d of %d lines with return value %s)',
                                $output =~ tr/\n//,
                                $compare =~ tr/\n//,
                                explain($result),
                        ));
+                       diag('         got: "', join('\n', split $/, $output ), '"');
+                       diag('    expected: "', join('\n', split $/, $compare), '"');
                        return;
                }
        }
@@ -45,28 +47,28 @@ sub testfileset {
 
 my $BASICBODY = "replace$/noremove$/remove$/.$/";
 
-testfileset('no match',      $BASICBODY,    [undef, 'nomatch'], 0, $BASICBODY);
-testfileset('remove string', $BASICBODY,    [undef, 'remove'],  1, "replace$/noremove$/.$/");
-testfileset('remove empty',  "$/.$/ $/$/",  [undef, ''],        2, ".$/ $/");
-testfileset('remove regex',  $BASICBODY,    [undef, qr/^re/],   2);
-testfileset('remove all',    $BASICBODY,    [undef, qr/./],     4, '');
+testfileset('no match',      $BASICBODY,    ['no'      => undef], 0, $BASICBODY);
+testfileset('remove string', $BASICBODY,    ['remove'  => undef], 1, "replace$/noremove$/.$/");
+testfileset('remove empty',  "$/.$/ $/$/",  [''        => undef], 2, ".$/ $/");
+testfileset('remove regex',  $BASICBODY,    [qr/^re/   => undef], 2, "noremove$/.$/");
+testfileset('remove all',    $BASICBODY,    [qr/./     => undef], 4, '');
 
-testfileset('add unconditionally', "$/0$/", ['0', undef],       1, "$/0$/0$/");
+testfileset('add unconditionally', "$/0$/", [undef()   => '0'], 1, "$/0$/0$/");
 testfileset('add string',     "foo$/",      ['bar'],            1, "foo$/bar$/");
 testfileset('keep string',    "foo$/bar$/", ['foo'],            0, "foo$/bar$/");
-testfileset('replace string', "1$/2$/3$/",  [4, 1],             2, "2$/3$/4$/");
-testfileset('replace all',    $BASICBODY,   ['', qr/^re/],      3, "noremove$/.$/$/");
-testfileset('keep first',     "foo$/bar$/foo$/", ['foo'],       1, "foo$/bar$/");
+testfileset('keep first',     "foo$/FOO$/foo$/", ['foo'],       1, "foo$/FOO$/");
+testfileset('replace string', "$/0$/1$/2$/", ['0' => 3],        2, "$/1$/2$/3$/");
+testfileset('keep regex',     "foo$/hi$/$/", [qr/./ => 'hi'],   1, "hi$/$/");
 
-testfileset('add new array',  ".$/",        [['foo','.'], ''],  2, ".$/foo$/.$/");
-testfileset('replace by array', "$/foo$/.$/", [['foo',''], ''], 3, "foo$/.$/foo$/$/");
-testfileset('partial add',    "foo$/$/",    [['foo','.'], 'foo'], 1, "foo$/$/.$/");
+testfileset('add new array',  ".$/",        ['' => ['foo','.']],  2, ".$/foo$/.$/");
+testfileset('replace by array', "$/foo$/.$/", ['' => ['foo','']], 3, "foo$/.$/foo$/$/");
+testfileset('partial add',    "foo$/$/",    ['foo' => ['foo','.']], 1, "foo$/$/.$/");
 
 my $SAMPLE2 = "$/foo$/and$/bar$/.$/";
-testfileset('keep pair',      $SAMPLE2, [['foo','bar']], 0, "$/foo$/and$/bar$/.$/");
+testfileset('keep pair',      $SAMPLE2, [['foo','bar']], 0, $SAMPLE2);
 testfileset('keep order',     $SAMPLE2, [['bar','foo']], 2, "$/and$/bar$/.$/foo$/");
-testfileset('replace pair',   $SAMPLE2, [['fooo','barr'], ['bar','foo']], 4, "$/and$/.$/fooo$/barr$/");
-testfileset('mixed arrays',   $SAMPLE2, [['bar','foo','.'],['ignore',qr/a/]], 3, "$/foo$/bar$/.$/foo$/.$/");
+testfileset('replace pair',   $SAMPLE2, [['bar','foo'] => ['fooo','barr']], 4, "$/and$/.$/fooo$/barr$/");
+testfileset('mixed arrays',   $SAMPLE2, [['ignore',qr/a/] => ['bar','foo','.']], 3, "$/foo$/bar$/.$/foo$/.$/");
 
 is(remove_tree($target), 19, 'no unexpected files');