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
|
#!/usr/bin/perl -w
use strict;
use lib 't/lib';
# We're going to need to override exit() later
BEGIN {
*CORE::GLOBAL::exit = sub(;$) {
my $status = @_ ? 0 : shift;
CORE::exit $status;
};
}
use Test::More;
use Test::Builder;
use Test::Builder::NoOutput;
{
my $tb = Test::Builder::NoOutput->create;
ok $tb->is_passing, "a fresh TB object is passing";
$tb->ok(1);
ok $tb->is_passing, " still passing after a test";
$tb->ok(0);
ok !$tb->is_passing, " not passing after a failing test";
$tb->ok(1);
ok !$tb->is_passing, " a passing test doesn't resurrect it";
$tb->done_testing(3);
ok !$tb->is_passing, " a successful plan doesn't help either";
}
# See if is_passing() notices a plan overrun
{
my $tb = Test::Builder::NoOutput->create;
$tb->plan( tests => 1 );
$tb->ok(1);
ok $tb->is_passing, "Passing with a plan";
$tb->ok(1);
ok !$tb->is_passing, " passing test, but it overran the plan";
}
# is_passing() vs no_plan
{
my $tb = Test::Builder::NoOutput->create;
$tb->plan( "no_plan" );
ok $tb->is_passing, "Passing with no_plan";
$tb->ok(1);
ok $tb->is_passing, " still passing after a test";
$tb->ok(1);
ok $tb->is_passing, " and another test";
$tb->_ending;
ok $tb->is_passing, " and after the ending";
}
# is_passing() vs skip_all
{
my $tb = Test::Builder::NoOutput->create;
{
no warnings 'redefine';
local *CORE::GLOBAL::exit = sub {
return 1;
};
$tb->plan( "skip_all" );
}
ok $tb->is_passing, "Passing with skip_all";
}
# is_passing() vs done_testing(#)
{
my $tb = Test::Builder::NoOutput->create;
$tb->ok(1);
$tb->done_testing(2);
ok !$tb->is_passing, "All tests passed but done_testing() does not match";
}
# is_passing() with no tests run vs done_testing()
{
my $tb = Test::Builder::NoOutput->create;
$tb->done_testing();
ok !$tb->is_passing, "No tests run with done_testing()";
}
# is_passing() with no tests run vs done_testing()
{
my $tb = Test::Builder::NoOutput->create;
$tb->ok(1);
$tb->done_testing();
ok $tb->is_passing, "All tests passed with done_testing()";
}
done_testing();
|