]> git.vpit.fr Git - perl/modules/Test-Leaner.git/commitdiff
Test ok() return value, with overloading, and failing
authorVincent Pit <vince@profvince.com>
Tue, 28 Dec 2010 10:13:37 +0000 (11:13 +0100)
committerVincent Pit <vince@profvince.com>
Tue, 28 Dec 2010 14:32:02 +0000 (15:32 +0100)
MANIFEST
t/20-ok.t
t/21-ok-failing.t [new file with mode: 0644]
t/22-is.t [moved from t/21-is.t with 100% similarity]
t/24-cmp_ok.t [moved from t/22-cmp_ok.t with 100% similarity]

index 6475c445d558c351cd1e3781222775a5332c9aa5..b3a5263e467eee4ddd710eaadeeb85817ff57b30 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -20,8 +20,9 @@ t/18-skip.t
 t/19-comments.t
 t/80-threads.t
 t/20-ok.t
-t/21-is.t
-t/22-cmp_ok.t
+t/21-ok-failing.t
+t/22-is.t
+t/24-cmp_ok.t
 t/91-pod.t
 t/92-pod-coverage.t
 t/95-portability-files.t
index 9bc35ad8e3debe17859867757bd38332db16d38d..e6fcafe8063cb8f27643ef95e0b9e3bdd9c30f3a 100644 (file)
--- a/t/20-ok.t
+++ b/t/20-ok.t
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::Leaner tests => 4 + 1;
+use Test::Leaner tests => 4 + 1 + 2 + 1;
 
 ok 1;
 ok !!1,    'ok() test with a description';
@@ -12,3 +12,18 @@ ok +{},    'a hash ref is fine too';
 
 my @array = (undef);
 ok @array, 'ok() forces scalar context';
+
+my $ret = ok 1;
+ok $ret, 'ok(true) returns true';
+
+{
+ package Test::Leaner::TestOverload::AlwaysFalse;
+
+ use overload 'bool' => sub { 1 };
+
+ sub new { bless { }, shift }
+}
+
+my $z = Test::Leaner::TestOverload::AlwaysFalse->new;
+
+ok $z, 'ok($overloaded_true)';
diff --git a/t/21-ok-failing.t b/t/21-ok-failing.t
new file mode 100644 (file)
index 0000000..c00ab83
--- /dev/null
@@ -0,0 +1,69 @@
+#!perl -T
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use Test::Leaner ();
+
+use lib 't/lib';
+use Test::Leaner::TestHelper;
+
+my $buf;
+capture_to_buffer $buf
+                  or plan skip_all =>'perl 5.8 required to test ok() failing';
+
+plan tests => 3 * 5;
+
+reset_buffer {
+ local $@;
+ my $ret = eval { Test::Leaner::ok(0) };
+ is $@,    '',           'ok(0) does not croak';
+ ok !$ret,               'ok(0) returns false';
+ is $buf,  "not ok 1\n", 'ok(0) produces the correct TAP code';
+};
+
+reset_buffer {
+ local $@;
+ my $ret = eval { Test::Leaner::ok(undef) };
+ is $@,    '',           'ok(undef) does not croak';
+ ok !$ret,               'ok(undef) returns false';
+ is $buf,  "not ok 2\n", 'ok(undef) produces the correct TAP code';
+};
+
+reset_buffer {
+ local $@;
+ my $ret = eval { Test::Leaner::ok(!1) };
+ is $@,    '',           'ok(false) does not croak';
+ ok !$ret,               'ok(false) returns false';
+ is $buf,  "not ok 3\n", 'ok(false) produces the correct TAP code';
+};
+
+reset_buffer {
+ local $@;
+ my $ret = eval { Test::Leaner::ok(0, 'this is a comment') };
+ is $@,    '', 'ok(0, "comment") does not croak';
+ ok !$ret,     'ok(0, "comment") returns false';
+ is $buf,  "not ok 4 - this is a comment\n",
+               'ok(0, "comment") produces the correct TAP code';
+};
+
+{
+ package Test::Leaner::TestOverload::AlwaysFalse;
+
+ use overload 'bool' => sub { !1 };
+
+ sub new { bless { }, shift }
+}
+
+my $z = Test::Leaner::TestOverload::AlwaysFalse->new;
+
+reset_buffer {
+ local $@;
+ my $ret = eval { Test::Leaner::ok($z) };
+ is $@,    '',           'ok($overloaded_false) does not croak';
+ ok !$ret,               'ok($overloaded_false) returns false';
+ is $buf,  "not ok 5\n", 'ok($overloaded_false) produces the correct TAP code';
+};
+
similarity index 100%
rename from t/21-is.t
rename to t/22-is.t
similarity index 100%
rename from t/22-cmp_ok.t
rename to t/24-cmp_ok.t