Deprecate shellwords.pl with a warning
[p5sagit/p5-mst-13.2.git] / lib / autodie / t / autodie.t
CommitLineData
0b09a93a 1#!/usr/bin/perl -w
2use strict;
3
4use constant NO_SUCH_FILE => 'this_file_had_so_better_not_be_here';
5
6use 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
37eval { open(my $fh, '<', NO_SUCH_FILE); };
38is($@,"","autodie open outside of lexical scope");
39
40eval {
41 use autodie; # Should turn on everything
42 open(my $fh, '<', NO_SUCH_FILE);
43};
44
45like($@, qr{Can't open}, "vanilla use autodie turns on everything.");
46
47eval { open(my $fh, '<', NO_SUCH_FILE); };
48is($@,"","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