This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
t/harness can run the tests lib/*.t in parallel with each other.
[perl5.git] / t / op / warn.t
1 #!./perl
2 #line 3 warn.t
3
4 print "1..18\n";
5 my $test_num = 0;
6 sub ok {
7     print $_[0] ? "" : "not ", "ok ", ++$test_num, "\n";
8 }
9
10 my @warnings;
11 my $wa = []; my $ea = [];
12 $SIG{__WARN__} = sub { push @warnings, $_[0] };
13
14 @warnings = ();
15 $@ = "";
16 warn "foo\n";
17 ok @warnings==1 && $warnings[0] eq "foo\n";
18
19 @warnings = ();
20 $@ = "";
21 warn "foo", "bar\n";
22 ok @warnings==1 && $warnings[0] eq "foobar\n";
23
24 @warnings = ();
25 $@ = "";
26 warn "foo";
27 ok @warnings==1 && $warnings[0] eq "foo at warn.t line 26.\n";
28
29 @warnings = ();
30 $@ = "";
31 warn $wa;
32 ok @warnings==1 && ref($warnings[0]) eq "ARRAY" && $warnings[0] == $wa;
33
34 @warnings = ();
35 $@ = "";
36 warn "";
37 ok @warnings==1 &&
38     $warnings[0] eq "Warning: something's wrong at warn.t line 36.\n";
39
40 @warnings = ();
41 $@ = "";
42 warn;
43 ok @warnings==1 &&
44     $warnings[0] eq "Warning: something's wrong at warn.t line 42.\n";
45
46 @warnings = ();
47 $@ = "ERR\n";
48 warn "foo\n";
49 ok @warnings==1 && $warnings[0] eq "foo\n";
50
51 @warnings = ();
52 $@ = "ERR\n";
53 warn "foo", "bar\n";
54 ok @warnings==1 && $warnings[0] eq "foobar\n";
55
56 @warnings = ();
57 $@ = "ERR\n";
58 warn "foo";
59 ok @warnings==1 && $warnings[0] eq "foo at warn.t line 58.\n";
60
61 @warnings = ();
62 $@ = "ERR\n";
63 warn $wa;
64 ok @warnings==1 && ref($warnings[0]) eq "ARRAY" && $warnings[0] == $wa;
65
66 @warnings = ();
67 $@ = "ERR\n";
68 warn "";
69 ok @warnings==1 &&
70     $warnings[0] eq "ERR\n\t...caught at warn.t line 68.\n";
71
72 @warnings = ();
73 $@ = "ERR\n";
74 warn;
75 ok @warnings==1 &&
76     $warnings[0] eq "ERR\n\t...caught at warn.t line 74.\n";
77
78 @warnings = ();
79 $@ = $ea;
80 warn "foo\n";
81 ok @warnings==1 && $warnings[0] eq "foo\n";
82
83 @warnings = ();
84 $@ = $ea;
85 warn "foo", "bar\n";
86 ok @warnings==1 && $warnings[0] eq "foobar\n";
87
88 @warnings = ();
89 $@ = $ea;
90 warn "foo";
91 ok @warnings==1 && $warnings[0] eq "foo at warn.t line 90.\n";
92
93 @warnings = ();
94 $@ = $ea;
95 warn $wa;
96 ok @warnings==1 && ref($warnings[0]) eq "ARRAY" && $warnings[0] == $wa;
97
98 @warnings = ();
99 $@ = $ea;
100 warn "";
101 ok @warnings==1 && ref($warnings[0]) eq "ARRAY" && $warnings[0] == $ea;
102
103 @warnings = ();
104 $@ = $ea;
105 warn;
106 ok @warnings==1 && ref($warnings[0]) eq "ARRAY" && $warnings[0] == $ea;
107
108 1;