]> git.vpit.fr Git - perl/modules/Test-Leaner.git/blobdiff - t/07-BAIL_OUT.t
Factor the capturing logic into Test::Leaner::TestHelper
[perl/modules/Test-Leaner.git] / t / 07-BAIL_OUT.t
index cde9694099197f5abc2584fc5ab47e44a3485be2..b1fe00b74c3691c1f530240e908c34d9037ec658 100644 (file)
@@ -5,49 +5,43 @@ use warnings;
 
 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];
+  }
+ };
+}
 
-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';
-}
+};