Lots of consting
[p5sagit/p5-mst-13.2.git] / t / op / die.t
index 795d856..6f62afb 100755 (executable)
@@ -1,10 +1,10 @@
 #!./perl
 
-print "1..6\n";
+print "1..14\n";
 
 $SIG{__DIE__} = sub { print ref($_[0]) ? ("ok ",$_[0]->[0]++,"\n") : @_ } ;
 
-$err = "ok 1\n";
+$err = "#[\000]\nok 1\n";
 eval {
     die $err;
 };
@@ -24,3 +24,40 @@ eval {
     };
     die if $@;
 };
+
+eval {
+    eval {
+       die bless [ 7 ], "Error";
+    };
+    die if $@;
+};
+
+print "not " unless ref($@) eq "Out";
+print "ok 10\n";
+
+{
+    package Error;
+
+    sub PROPAGATE {
+       print "ok ",$_[0]->[0]++,"\n";
+       bless [$_[0]->[0]], "Out";
+    }
+}
+
+{
+    # die/warn and utf8
+    use utf8;
+    local $SIG{__DIE__};
+    my $msg = "ce ºtii tu, bã ?\n";
+    eval { die $msg }; print "not " unless $@ eq $msg;
+    print "ok 11\n";
+    our $err;
+    local $SIG{__WARN__} = $SIG{__DIE__} = sub { $err = shift };
+    eval { die $msg }; print "not " unless $err eq $msg;
+    print "ok 12\n";
+    eval { warn $msg }; print "not " unless $err eq $msg;
+    print "ok 13\n";
+    eval qq/ use strict; \$\x{3b1} /;
+    print "not " unless $@ =~ /Global symbol "\$\x{3b1}"/;
+    print "ok 14\n";
+}