add eval and error support to the t/op/smartmatch.t test
Yuval Kogman [Sat, 28 Jun 2008 22:40:35 +0000 (01:40 +0300)]
t/op/smartmatch.t

index 79b6b9b..e57e2dd 100644 (file)
@@ -43,15 +43,24 @@ sub match_test {
     my ($yn, $left, $right) = @_;
 
     die "Bad test spec: ($yn, $left, $right)"
-       unless $yn eq "" || $yn eq "!";
+       unless $yn eq "" || $yn eq "!" || $yn eq '@';
     
     my $tstr = "$left ~~ $right";
     
     my $res;
     $res = eval $tstr // "";   #/ <- fix syntax colouring
 
-    die $@ if $@ ne "";
-    ok( ($yn =~ /!/ xor $res), "$tstr: $res");
+    chomp $@;
+
+    if ( $yn eq '@' ) {
+       ok( $@ ne '', sprintf "%s%s: %s", $tstr, $@ ? ( ', $@', $@ ) : ( '', $res ) );
+    } else {
+       if ( $@ ne '' ) {
+           fail("$tstr, \$\@: $@");
+       } else {
+           ok( ($yn eq '!' xor $res), "$tstr: $res");
+       }
+    }
 }