File: excludes.t

package info (click to toggle)
libcpan-audit-perl 20250829.001-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 336 kB
  • sloc: perl: 909; makefile: 8
file content (50 lines) | stat: -rw-r--r-- 1,346 bytes parent folder | download | duplicates (3)
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
use v5.10;
use Test::More;

my $class = 'CPAN::Audit::Filter';
my @class_methods = qw(new);
my @instance_methods = qw(excludes ignored_count);

subtest sanity => sub {
	use_ok( $class );
	can_ok( $class, @class_methods );
	};

subtest 'no args' => sub {
	my $filter = $class->new;
	isa_ok( $filter, $class );
	can_ok( $filter, @instance_methods );
	};

subtest 'one args' => sub {
	my $warning;
	local $SIG{__WARN__} = sub { $warning .= $_[0] };
	my $filter = $class->new( 'excludes' );
	# diag( "Warning was <$warning>" );
	like( $warning, qr/Odd number/, 'Odd number of elements warns' );
	isa_ok( $filter, $class );
	can_ok( $filter, @instance_methods );
	};

subtest 'two args' => sub {
	my $id = 'Some-Package-2022-001';
	my $filter = $class->new( exclude => [ $id ] );

	isa_ok( $filter, $class );
	can_ok( $filter, @instance_methods );

	subtest 'nothing to ignore' => sub {
		my $rc = $filter->excludes( { id => 'xyz' } );
		ok( ! $rc, 'excludes returns false when it does not exclude' );
		is( $filter->ignored_count, 0, 'ignored_count returns 0 when it does not exclude' );
		};

	subtest 'something to ignore' => sub {
		my $rc = $filter->excludes( { id => $id } );
		ok( $rc, 'excludes returns true when it does exclude' );
		is( $filter->ignored_count, 1, 'ignored_count returns 1 when it does exclude' );
		};

	};

done_testing();