This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
new perldelta
[perl5.git] / cpan / autodie / t / internal.t
CommitLineData
35c0561a 1#!/usr/bin/perl
0b09a93a
PF
2use strict;
3
ebf27bc8
CBW
4use Scalar::Util qw(blessed);
5
0b09a93a
PF
6use constant NO_SUCH_FILE => "this_file_or_dir_had_better_not_exist_XYZZY";
7
35c0561a
CBW
8use Test::More tests => 7;
9
10use Fatal();
11
12# Silence the warnings from using Fatal qw(:lexical)
0b09a93a
PF
13
14# Lexical tests using the internal interface.
15
35c0561a
CBW
16my @warnings;
17eval {
18 # Filter out deprecation warning (no warnings qw(deprecated) does
19 # not seem to work for some reason)
20 local $SIG{'__WARN__'} = sub {
21 push(@warnings, @_) unless $_[0] =~ m/Fatal qw\(:lexical/;
22 };
23 Fatal->import(qw(:lexical :void))
24};
0b09a93a 25like($@, qr{:void cannot be used with lexical}, ":void can't be used with :lexical");
35c0561a 26warn($_) while shift @warnings;
0b09a93a
PF
27
28eval { Fatal->import(qw(open close :lexical)) };
29like($@, qr{:lexical must be used as first}, ":lexical must come first");
30
31{
35c0561a
CBW
32 BEGIN {
33 # Filter out deprecation warning (no warnings qw(deprecated) does
34 # not seem to work for some reason)
35 local $SIG{'__WARN__'} = sub {
36 push(@warnings, @_) unless $_[0] =~ m/Fatal qw\(:lexical/;
37 };
38 import Fatal qw(:lexical chdir);
39 };
40 warn($_) while shift @warnings;
0b09a93a 41 eval { chdir(NO_SUCH_FILE); };
ebf27bc8
CBW
42 my $err = $@;
43 like ($err, qr/^Can't chdir/, "Lexical fatal chdir");
ebf27bc8
CBW
44 {
45 no Fatal qw(:lexical chdir);
46 eval { chdir(NO_SUCH_FILE); };
47 is ($@, "", "No lexical fatal chdir");
48 }
0b09a93a
PF
49
50 eval { chdir(NO_SUCH_FILE); };
ebf27bc8
CBW
51 $err = $@;
52 like ($err, qr/^Can't chdir/, "Lexical fatal chdir returns");
0b09a93a
PF
53}
54
55eval { chdir(NO_SUCH_FILE); };
56is($@, "", "Lexical chdir becomes non-fatal out of scope.");
57
58eval { Fatal->import('2+2'); };
59like($@,qr{Bad subroutine name},"Can't use fatal with invalid sub names");