]> git.vpit.fr Git - perl/modules/Test-Leaner.git/commitdiff
Test BAIL_OUT()
authorVincent Pit <vince@profvince.com>
Mon, 27 Dec 2010 22:49:16 +0000 (23:49 +0100)
committerVincent Pit <vince@profvince.com>
Mon, 27 Dec 2010 22:49:16 +0000 (23:49 +0100)
MANIFEST
t/07-BAIL_OUT.t [new file with mode: 0644]

index c89c5a882df5094d925e528105394c3ab1294f8f..1d2acad95eac727ea666baa5b1f313863f40217d 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -7,6 +7,7 @@ t/00-load.t
 t/01-import.t
 t/05-pass.t
 t/06-fail.t
+t/07-BAIL_OUT.t
 t/10-plan-tests.t
 t/11-plan-no_plan.t
 t/12-plan-skip_all.t
diff --git a/t/07-BAIL_OUT.t b/t/07-BAIL_OUT.t
new file mode 100644 (file)
index 0000000..cde9694
--- /dev/null
@@ -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';
+}