App-MtAws
view release on metacpan or search on metacpan
t/unit/filter.t view on Meta::CPAN
'match_subdirs' => bool(0)
}];
}
{
my $F = App::MtAws::Filter->new();
$F->parse_include('!*.gz');
cmp_deeply $F->{filters}, [{
'pattern' => '!*.gz',
'notmatch' => bool(1),
're' => qr/(^|\/)[^\/]*\.gz$/,
'action' => '+',
'match_subdirs' => bool(0)
}];
}
{
my $F = App::MtAws::Filter->new();
$F->parse_exclude('*.gz');
cmp_deeply $F->{filters},[{
'pattern' => '*.gz',
'notmatch' => bool(0),
're' => qr/(^|\/)[^\/]*\.gz$/,
'action' => '-',
'match_subdirs' => bool(0)
}];
}
{
my $F = App::MtAws::Filter->new();
$F->parse_exclude('!*.gz');
cmp_deeply $F->{filters}, [{
'pattern' => '!*.gz',
'notmatch' => bool(1),
're' => qr/(^|\/)[^\/]*\.gz$/,
'action' => '-',
'match_subdirs' => bool(0)
}];
}
#
# check_filenames
#
sub test_check_filenames
{
my ($filters, $list, $expected, $msg) = @_;
my $F = App::MtAws::Filter->new();
$F->parse_filters($filters);
ok ! defined $F->{error};
cmp_deeply [$F->check_filenames(@$list)], $expected, $msg;
}
test_check_filenames '+*.gz -/data/ +', [qw{1.gz 1.txt data/1.txt data/z/1.txt data/2.gz f data/p/33.gz}],
[qw{1.gz 1.txt data/2.gz f data/p/33.gz}], "should work";
test_check_filenames '-/data/ +*.gz -', [qw{1.gz p/1.gz data/ data/1.gz data/a/1.gz}], [qw{1.gz p/1.gz}], "should work again";
test_check_filenames '+*.gz -/data/', [qw{1.gz 1.txt data/1.txt data/z/1.txt data/2.gz f data/p/33.gz}],
[qw{1.gz 1.txt data/2.gz f data/p/33.gz}], "default action - include";
test_check_filenames '+*.gz +/data/ -', [qw{x/y x/y/z.gz /data/1 /data/d/2 abc}], [qw{x/y/z.gz /data/1 /data/d/2}], "default action - exclude";
test_check_filenames '-!/data/ +*.gz +/data/backup/ -',
[qw{data/1 dir/1.gz data/2 data/3.gz data/x/4.gz data/backup/5.gz data/backup/6/7.gz data/backup/z/1.txt}],
[qw{data/3.gz data/x/4.gz data/backup/5.gz data/backup/6/7.gz data/backup/z/1.txt}], "exclamation mark should work";
test_check_filenames '-0.* -Ñexclude/a/ +*.gz -', [qw{fexclude/b Ñexclude/b.gz}], [qw{Ñexclude/b.gz}], "exclamation mark should work";
#
# check_dir
#
sub test_check_dir
{
my ($filters, $dir, $res, $subdirs) = @_;
my $F = App::MtAws::Filter->new();
$F->parse_filters($filters);
ok ! defined $F->{error};
cmp_deeply [$F->check_dir($dir)], [bool($res), bool($subdirs)]
}
test_check_dir '+*.gz -/data/ +', 'data/', 0, 0;
test_check_dir '-/data/ +*.gz +', 'data/', 0, 1;
test_check_dir '+*.gz -/data** +', 'datadir/', 0, 0;
test_check_dir '-/data** +*.gz +', 'datadir/', 0, 1;
test_check_dir '-*.gz -/data** +', 'datadir/', 0, 1;
test_check_dir '-/data** -*.gz -/data** +', 'datadir/', 0, 1;
test_check_dir '+1.txt -*.gz -/data** +', 'datadir/', 0, 0;
test_check_dir '-1.txt -*.gz +/data** +', 'datadir/', 1, 0;
test_check_dir '+/data/ -', 'data/', 1, 0;
test_check_dir '+!/data/ -', 'somedir/', 1, 0;
test_check_dir '-!/data/ +', 'somedir/', 0, 0;
test_check_dir '-!/data/ +', 'somedir/', 0, 0;
test_check_dir '-/data/a/ +', 'data/', 1, 0;
test_check_dir '-/data/a/ +', 'data/a/', 0, 1;
1;
( run in 1.059 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )