Moritz Lenz wrote:
Oops, forgot to attach patch. Now it's really there.

Your implementations of eval_lives_ok and eval_dies_ok seem inconsistent. eval_lives_ok uses try and eval_dies_ok does not. The two implementations may catch different types of exceptions. I am proposing the patch below:

$ svn diff Test.pm
Index: Test.pm
===================================================================
--- Test.pm     (revision 28117)
+++ Test.pm     (working copy)
@@ -122,17 +122,20 @@
    lives_ok($closure, '');
}

+sub eval_exception ($code) {
+    my $eval_exception;
+    try { eval ( $code ); $eval_exception = $! }
+    $eval_exception // $!;
+}
multi sub eval_dies_ok($code, $reason) {
-    eval ( $code );
-    proclaim((defined $!), $reason);
+    proclaim((defined eval_exception($code)), $reason);
}
multi sub eval_dies_ok($code) {
    eval_dies_ok($code, '');
}

multi sub eval_lives_ok($code, $reason) {
-    try { eval ($code) }
-    proclaim((not defined $!), $reason);
+    proclaim((not defined eval_exception($code)), $reason);
}
multi sub eval_lives_ok($code) {
    eval_lives_ok($code, '');


Reply via email to