1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
package FilterTest;
use strict;
use warnings;
use base 'Exporter';
use App::Ack::Resource;
use File::Next;
use Util;
use Test::More;
our @EXPORT = qw(filter_test);
sub swamp_files {
my @swamp_files;
my $files = File::Next::files( 't/swamp' );
while ( my $file = $files->() ) {
push( @swamp_files, $file );
}
return @swamp_files;
}
sub filter_test {
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $filter_args = shift;
my $expected_matches = shift;
my $msg = shift or die 'Must pass a message to filter_test()';
return subtest "filter_test($msg)" => sub {
my $filter = eval {
App::Ack::Filter->create_filter(@{$filter_args});
};
ok($filter) or diag($@);
my @matches = map {
$_->name
} grep {
$filter->filter($_)
} map {
App::Ack::Resource->new($_)
} swamp_files();
sets_match(\@matches, $expected_matches, $msg);
};
}
1;
|