xref: /openbsd/gnu/usr.bin/perl/dist/Carp/t/errno.t (revision 73471bf0)
1use warnings;
2use strict;
3
4use Test::More tests => 20;
5
6use Carp ();
7
8sub AA::CARP_TRACE { $! = 42; $^E = 42; "Tracy" }
9my $aa = bless({}, "AA");
10
11my($m, $errno, $exterr);
12
13$! = 69; $^E = 69;
14sub lmm { Carp::longmess("x") }
15sub lm { lmm() }
16$m = lm($aa);
17$errno = 0+$!; $exterr = 0+$^E;
18like $m, qr/Tracy/;
19is $errno, 69;
20is $exterr, 69;
21
22$! = 69; $^E = 69;
23sub sm { Carp::shortmess("x") }
24$m = sm($aa);
25$errno = 0+$!; $exterr = 0+$^E;
26like $m, qr/Tracy/;
27is $errno, 69;
28is $exterr, 69;
29
30$SIG{__WARN__} = sub { $m = $_[0]; $errno = 0+$!; $exterr = 0+$^E; };
31
32$! = 69; $^E = 69;
33$m = $errno = $exterr = undef;
34sub cl { Carp::cluck("x") }
35cl($aa);
36like $m, qr/Tracy/;
37is $errno, 69;
38is $exterr, 69;
39
40$! = 69; $^E = 69;
41$m = $errno = $exterr = undef;
42sub cp { Carp::carp("x") }
43cp($aa);
44like $m, qr/Tracy/;
45is $errno, 69;
46is $exterr, 69;
47
48$SIG{__DIE__} = $SIG{__WARN__};
49delete $SIG{__WARN__};
50
51$! = 69; $^E = 69;
52$m = $errno = $exterr = undef;
53sub cf { Carp::confess("x") }
54eval { cf($aa) };
55like $@, qr/Tracy/;
56like $m, qr/Tracy/;
57is $errno, 69;
58is $exterr, 69;
59
60$! = 69; $^E = 69;
61$m = $errno = $exterr = undef;
62sub ck { Carp::croak("x") }
63eval { ck($aa) };
64like $@, qr/Tracy/;
65like $m, qr/Tracy/;
66is $errno, 69;
67is $exterr, 69;
68
69delete $SIG{__DIE__};
70
711;
72