use Test::More;
-plan skip_all => 'perl 5.8 required to test BAIL_OUT()' unless $] >= 5.008;
+our $status;
+BEGIN {
+ *CORE::GLOBAL::exit = *CORE::GLOBAL::exit = sub {
+ my $caller = caller;
+ if ($caller eq 'Test::Leaner') {
+ $status = $_[0] || 0;
+ } else {
+ CORE::exit $_[0];
+ }
+ };
+
+ delete $ENV{PERL_TEST_LEANER_USES_TEST_MORE};
+}
-my $buf = '';
-open my $memory_stream, '>', \$buf
- or plan skip_all => 'could not create the in-memory file';
+use Test::Leaner ();
-plan tests => 7;
+use lib 't/lib';
+use Test::Leaner::TestHelper;
-our $status;
-*CORE::GLOBAL::exit = *CORE::GLOBAL::exit = sub {
- my $caller = caller;
- if ($caller eq 'Test::Leaner') {
- $status = $_[0] || 0;
- } else {
- CORE::exit $_[0];
- }
-};
+my $buf = '';
+capture_to_buffer $buf
+ or plan skip_all => 'perl 5.8 required to test BAIL_OUT()';
-require Test::Leaner;
-{
- local $@;
- eval { Test::Leaner::tap_stream($memory_stream) };
- is $@, '', 'tap_stream($fh) does not croak';
-}
+plan tests => 6;
-{
+reset_buffer {
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';
-}
+};
-{
+reset_buffer {
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';
-}
+};