X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=blobdiff_plain;f=t%2F10-args.t;h=444c730f49334bf0f726c50ca3894ff88652fcfe;hp=4037c60eb95231591255b08f4c613dfc46b64018;hb=75a60b70d39a18521fcf5c2fbc7266100da27110;hpb=e11d9a3efc1dcc5648202bd7651a982477bbc587 diff --git a/t/10-args.t b/t/10-args.t index 4037c60..444c730 100644 --- a/t/10-args.t +++ b/t/10-args.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 4 + 1 + 1; +use Test::More tests => 4 + 3 + 1 + 2; BEGIN { delete $ENV{PERL_INDIRECT_PM_DISABLE} } @@ -31,17 +31,17 @@ sub expect { is_deeply \@warns, [ ], 'no more warnings without arguments'; } -{ +for my $fatal (':fatal', 'FATAL', ':Fatal') { { local $SIG{__WARN__} = sub { die "warn:@_" }; - eval <<' HERE'; + eval <<" HERE"; die qq{shouldn't even compile\n}; - no indirect ':fatal', hook => sub { die 'should not be called' }; - my $x = new Croaked; - $x = new NotReached; + no indirect '$fatal'; + my \$x = new Croaked; + \$x = new NotReached; HERE } - like $@, expect('Croaked'), 'croaks when :fatal is specified'; + like $@, expect('Croaked'), "croaks when $fatal is specified"; } { @@ -49,10 +49,34 @@ sub expect { local $SIG{__WARN__} = sub { "warn:@_" }; eval <<' HERE'; die qq{shouldn't even compile\n}; - no indirect 'whatever', hook => sub { die 'hook:' . join(':', @_) . "\n" }, ':fatal'; + no indirect 'whatever', hook => sub { die 'hook:' . join(':', @_) . "\n" }; my $x = new Hooked; $x = new AlsoNotReached; HERE } like $@, qr/^hook:Hooked:new:\(eval\s+\d+\):\d+$/, 'calls the specified hook'; } + +{ + my $no_hook_and_fatal = qr/^The 'fatal' and 'hook' options are mutually exclusive at \(eval \d+\) line \d+/; + + { + local $SIG{__WARN__} = sub { die "warn:@_" }; + eval <<' HERE'; + die qq{shouldn't even compile\n}; + no indirect 'fatal', hook => sub { }; + new NotReached; + HERE + } + like $@, $no_hook_and_fatal, '"no indirect qw" croaks'; + + { + local $SIG{__WARN__} = sub { die "warn:@_" }; + eval <<' HERE'; + die qq{shouldn't even compile\n}; + no indirect hook => sub { }, 'fatal'; + new NotReached; + HERE + } + like $@, $no_hook_and_fatal, '"no indirect qw" croaks'; +}