#!/usr/bin/perl -w
BEGIN {
*CORE::GLOBAL::exit
=
sub
(;$) {
my
$status
=
@_
? 0 :
shift
;
CORE::
exit
$status
;
};
}
{
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"
;
}
{
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"
;
}
{
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"
;
}
{
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"
;
}
{
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"
;
}
{
my
$tb
= Test::Builder::NoOutput->create;
$tb
->done_testing();
ok !
$tb
->is_passing,
"No tests run with 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();