This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
some WinCE compilers require a little correction
[perl5.git] / t / op / die.t
1 #!./perl
2
3 print "1..14\n";
4
5 $SIG{__DIE__} = sub { print ref($_[0]) ? ("ok ",$_[0]->[0]++,"\n") : @_ } ;
6
7 $err = "#[\000]\nok 1\n";
8 eval {
9     die $err;
10 };
11
12 print "not " unless $@ eq $err;
13 print "ok 2\n";
14
15 $x = [3];
16 eval { die $x; };
17
18 print "not " unless $x->[0] == 4;
19 print "ok 4\n";
20
21 eval {
22     eval {
23         die [ 5 ];
24     };
25     die if $@;
26 };
27
28 eval {
29     eval {
30         die bless [ 7 ], "Error";
31     };
32     die if $@;
33 };
34
35 print "not " unless ref($@) eq "Out";
36 print "ok 10\n";
37
38 {
39     package Error;
40
41     sub PROPAGATE {
42         print "ok ",$_[0]->[0]++,"\n";
43         bless [$_[0]->[0]], "Out";
44     }
45 }
46
47 {
48     # die/warn and utf8
49     use utf8;
50     local $SIG{__DIE__};
51     my $msg = "ce ºtii tu, bã ?\n";
52     eval { die $msg }; print "not " unless $@ eq $msg;
53     print "ok 11\n";
54     our $err;
55     local $SIG{__WARN__} = $SIG{__DIE__} = sub { $err = shift };
56     eval { die $msg }; print "not " unless $err eq $msg;
57     print "ok 12\n";
58     eval { warn $msg }; print "not " unless $err eq $msg;
59     print "ok 13\n";
60     eval qq/ use strict; \$\x{3b1} /;
61     print "not " unless $@ =~ /Global symbol "\$\x{3b1}"/;
62     print "ok 14\n";
63 }