Update Module::Build to 0.33_05
[p5sagit/p5-mst-13.2.git] / lib / autodie / t / autodie.t
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