Commit | Line | Data |
0b09a93a |
1 | #!/usr/bin/perl -w |
2 | use strict; |
3 | |
4 | use constant NO_SUCH_FILE => 'this_file_had_so_better_not_be_here'; |
5 | |
6 | use Test::More tests => 19; |
7 | |
8 | { |
9 | |
10 | use autodie qw(open); |
11 | |
12 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
13 | like($@,qr{Can't open},"autodie qw(open) in lexical scope"); |
14 | |
15 | no autodie qw(open); |
16 | |
17 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
18 | is($@,"","no autodie qw(open) in lexical scope"); |
19 | |
20 | use autodie qw(open); |
21 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
22 | like($@,qr{Can't open},"autodie qw(open) in lexical scope 2"); |
23 | |
24 | no autodie; # Should turn off all autodying subs |
25 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
26 | is($@,"","no autodie in lexical scope 2"); |
27 | |
28 | # Turn our pragma on one last time, so we can verify that |
29 | # falling out of this block reverts it back to previous |
30 | # behaviour. |
31 | use autodie qw(open); |
32 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
33 | like($@,qr{Can't open},"autodie qw(open) in lexical scope 3"); |
34 | |
35 | } |
36 | |
37 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
38 | is($@,"","autodie open outside of lexical scope"); |
39 | |
40 | eval { |
41 | use autodie; # Should turn on everything |
42 | open(my $fh, '<', NO_SUCH_FILE); |
43 | }; |
44 | |
45 | like($@, qr{Can't open}, "vanilla use autodie turns on everything."); |
46 | |
47 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
48 | is($@,"","vanilla autodie cleans up"); |
49 | |
50 | { |
51 | use autodie qw(:io); |
52 | |
53 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
54 | like($@,qr{Can't open},"autodie q(:io) makes autodying open"); |
55 | |
56 | no autodie qw(:io); |
57 | |
58 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
59 | is($@,"", "no autodie qw(:io) disabled autodying open"); |
60 | } |
61 | |
62 | { |
63 | package Testing_autodie; |
64 | |
65 | use Test::More; |
66 | |
67 | use constant NO_SUCH_FILE => ::NO_SUCH_FILE(); |
68 | |
69 | use Fatal qw(open); |
70 | |
71 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
72 | |
73 | like($@, qr{Can't open}, "Package fatal working"); |
74 | is(ref $@,"","Old Fatal throws strings"); |
75 | |
76 | { |
77 | use autodie qw(open); |
78 | |
79 | ok(1,"use autodie allowed with Fatal"); |
80 | |
81 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
82 | like($@, qr{Can't open}, "autodie and Fatal works"); |
83 | isa_ok($@, "autodie::exception"); # autodie throws real exceptions |
84 | |
85 | } |
86 | |
87 | eval { open(my $fh, '<', NO_SUCH_FILE); }; |
88 | |
89 | like($@, qr{Can't open}, "Package fatal working after autodie"); |
90 | is(ref $@,"","Old Fatal throws strings after autodie"); |
91 | |
92 | eval " no autodie qw(open); "; |
93 | |
94 | ok($@,"no autodie on Fataled sub an error."); |
95 | |
96 | eval " |
97 | no autodie qw(close); |
98 | use Fatal 'close'; |
99 | "; |
100 | |
101 | like($@, qr{not allowed}, "Using fatal after autodie is an error."); |
102 | } |
103 | |