File::Rewrite::fileset to strip matching lines
[perl/file-rewrite.git] / t / 10-fileset.t
1 #!/usr/bin/env perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 8;
7 use Test::NoWarnings;
8
9 use autodie;
10 use File::Temp qw(tempdir);
11 use File::Path qw(remove_tree);
12
13 BEGIN { use_ok('File::Rewrite', 'fileset'); }
14
15 my $target = tempdir();
16
17 sub testfileset {
18         my ($name, $input, $params, $result) = @_;
19
20         my $filename = "$target/$name";
21         open my $file, '>', $filename;
22         print {$file} $input;
23         close $file;
24
25         is(fileset($filename, @$params), $result, $name)
26                 or diag(explain $input);
27 }
28
29 my $BASICBODY = "replace$/noremove$/remove$/.$/";
30
31 testfileset('no match',      $BASICBODY,    [undef, 'nomatch'], 0);
32 testfileset('remove string', $BASICBODY,    [undef, 'remove'],  1);
33 testfileset('remove empty',  "$/.$/ $/$/",  [undef, ''],        2);
34 testfileset('remove regex',  $BASICBODY,    [undef, qr/^re/],   2);
35 testfileset('remove all',    $BASICBODY,    [undef, qr/./],     4);
36
37 is(remove_tree($target), 6, 'no unexpected files');
38