X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F07-BAIL_OUT.t;fp=t%2F07-BAIL_OUT.t;h=cde9694099197f5abc2584fc5ab47e44a3485be2;hb=9497e7098591c7bbc659406d4ffae555a7b8acc8;hp=0000000000000000000000000000000000000000;hpb=c80a21dbcb4445fe4aebe276d439d2a2d8b310b1;p=perl%2Fmodules%2FTest-Leaner.git diff --git a/t/07-BAIL_OUT.t b/t/07-BAIL_OUT.t new file mode 100644 index 0000000..cde9694 --- /dev/null +++ b/t/07-BAIL_OUT.t @@ -0,0 +1,53 @@ +#!perl -T + +use strict; +use warnings; + +use Test::More; + +plan skip_all => 'perl 5.8 required to test BAIL_OUT()' unless $] >= 5.008; + +my $buf = ''; +open my $memory_stream, '>', \$buf + or plan skip_all => 'could not create the in-memory file'; + +plan tests => 7; + +our $status; +*CORE::GLOBAL::exit = *CORE::GLOBAL::exit = sub { + my $caller = caller; + if ($caller eq 'Test::Leaner') { + $status = $_[0] || 0; + } else { + CORE::exit $_[0]; + } +}; + +require Test::Leaner; + +{ + local $@; + eval { Test::Leaner::tap_stream($memory_stream) }; + is $@, '', 'tap_stream($fh) does not croak'; +} + +{ + local ($@, $status); + $buf = ''; + seek $memory_stream, 0, 0; + eval { Test::Leaner::BAIL_OUT() }; + is $@, '', 'BAIL_OUT() does not croak'; + is $buf, "Bail out!\n", 'BAIL_OUT() produces the correct TAP code'; + is $status, 255, 'BAIL_OUT() exits with the correct status'; +} + +{ + local ($@, $status); + $buf = ''; + seek $memory_stream, 0, 0; + eval { Test::Leaner::BAIL_OUT('this is a comment') }; + is $@, '', 'BAIL_OUT("comment") does not croak'; + is $buf, "Bail out! this is a comment\n", + 'BAIL_OUT("comment") produces the correct TAP code'; + is $status, 255, 'BAIL_OUT("comment") exits with the correct status'; +}