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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
#!/usr/bin/perl -Tw
use strict;
BEGIN {
if( $ENV{PERL_CORE} ) {
chdir 't';
@INC = ('../lib', 'lib');
}
else {
unshift @INC, 't/lib';
}
}
use Test::More tests => 89;
BEGIN { use_ok('Test::Harness::Straps'); }
my $strap = Test::Harness::Straps->new;
isa_ok( $strap, 'Test::Harness::Straps', 'new()' );
### Testing _is_diagnostic()
my $comment;
ok( !$strap->_is_diagnostic("foo", \$comment), '_is_diagnostic(), not a comment' );
ok( !defined $comment, ' no comment set' );
ok( !$strap->_is_diagnostic("f # oo", \$comment), ' not a comment with #' );
ok( !defined $comment, ' no comment set' );
my %comments = (
"# stuff and things # and stuff" =>
' stuff and things # and stuff',
" # more things " => ' more things ',
"#" => '',
);
for my $line ( sort keys %comments ) {
my $line_comment = $comments{$line};
my $strap = Test::Harness::Straps->new;
isa_ok( $strap, 'Test::Harness::Straps' );
my $name = substr($line, 0, 20);
ok( $strap->_is_diagnostic($line, \$comment), " comment '$name'" );
is( $comment, $line_comment, ' right comment set' );
}
### Testing _is_header()
my @not_headers = (' 1..2',
'1..M',
'1..-1',
'2..2',
'1..a',
'',
);
foreach my $unheader (@not_headers) {
my $strap = Test::Harness::Straps->new;
isa_ok( $strap, 'Test::Harness::Straps' );
ok( !$strap->_is_header($unheader),
"_is_header(), not a header '$unheader'" );
ok( (!grep { exists $strap->{$_} } qw(max todo skip_all)),
" max, todo and skip_all are not set" );
}
my @attribs = qw(max skip_all todo);
my %headers = (
'1..2' => { max => 2 },
'1..1' => { max => 1 },
'1..0' => { max => 0,
skip_all => '',
},
'1..0 # Skipped: no leverage found' => { max => 0,
skip_all => 'no leverage found',
},
'1..4 # Skipped: no leverage found' => { max => 4,
skip_all => 'no leverage found',
},
'1..0 # skip skip skip because' => { max => 0,
skip_all => 'skip skip because',
},
'1..10 todo 2 4 10' => { max => 10,
'todo' => { 2 => 1,
4 => 1,
10 => 1,
},
},
'1..10 todo' => { max => 10 },
'1..192 todo 4 2 13 192 # Skip skip skip because' =>
{ max => 192,
'todo' => { 4 => 1,
2 => 1,
13 => 1,
192 => 1,
},
skip_all => 'skip skip because'
}
);
for my $header ( sort keys %headers ) {
my $expect = $headers{$header};
my $strap = Test::Harness::Straps->new;
isa_ok( $strap, 'Test::Harness::Straps' );
ok( $strap->_is_header($header), "_is_header() is a header '$header'" );
is( $strap->{skip_all}, $expect->{skip_all}, ' skip_all set right' )
if defined $expect->{skip_all};
ok( eq_set( [map $strap->{$_}, grep defined $strap->{$_}, @attribs],
[map $expect->{$_}, grep defined $expect->{$_}, @attribs] ),
' the right attributes are there' );
}
### Test _is_bail_out()
my %bails = (
'Bail out!' => undef,
'Bail out! Wing on fire.' => 'Wing on fire.',
'BAIL OUT!' => undef,
'bail out! - Out of coffee' => '- Out of coffee',
);
for my $line ( sort keys %bails ) {
my $expect = $bails{$line};
my $strap = Test::Harness::Straps->new;
isa_ok( $strap, 'Test::Harness::Straps' );
my $reason;
ok( $strap->_is_bail_out($line, \$reason), "_is_bail_out() spots '$line'");
is( $reason, $expect, ' with the right reason' );
}
my @unbails = (
' Bail out!',
'BAIL OUT',
'frobnitz',
'ok 23 - BAIL OUT!',
);
foreach my $line (@unbails) {
my $strap = Test::Harness::Straps->new;
isa_ok( $strap, 'Test::Harness::Straps' );
my $reason;
ok( !$strap->_is_bail_out($line, \$reason),
"_is_bail_out() ignores '$line'" );
is( $reason, undef, ' and gives no reason' );
}
|