File: FilterTest.pm

package info (click to toggle)
ack 2.24-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,704 kB
  • sloc: perl: 8,590; ansic: 21; fortran: 11; makefile: 5; sh: 5
file content (52 lines) | stat: -rw-r--r-- 1,029 bytes parent folder | download
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;