X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F11-args.t;h=a1018905af479f52071db03dff4b5c8e74eb4bdd;hb=61f64dfa5fa4f435e6cd854d22e4325ef1eb0068;hp=36047c5f66455574f67e5b00928e85096544740e;hpb=e4e6358721277a2d4251bc19b28b6753fd8fe3b9;p=perl%2Fmodules%2FLexical-Types.git diff --git a/t/11-args.t b/t/11-args.t index 36047c5..a101890 100644 --- a/t/11-args.t +++ b/t/11-args.t @@ -3,13 +3,14 @@ use strict; use warnings; -use Test::More tests => 12 + 6; +use Test::More tests => 14 + 6; { package Lexical::Types::Test::LTT; sub TYPEDSCALAR { $_[1] = (caller(0))[2]; + local $Test::Builder::Level = $Test::Builder::Level + 1; Test::More::is($_[2], 'LTT', 'original type is ok'); (); } @@ -24,6 +25,12 @@ use Test::More tests => 12 + 6; sub TYPEDSCALAR { 1 .. 2 } } +{ + package Lexical::Types::Test::LTT3; + + sub TYPEDSCALAR { die 'coconut' } +} + { package LTT; @@ -81,7 +88,7 @@ use Test::More tests => 12 + 6; my $expect = qr/^Invalid ARRAY reference/; local $@; eval q[ - use Lexical::Types as => [ qw/a b c/ ]; + use Lexical::Types as => [ qw ]; my LTT $x; ]; like $@, $expect, 'as => array'; @@ -89,10 +96,10 @@ use Test::More tests => 12 + 6; { my $expect = qr/^Lexical::Types mangler should return zero, one or two scalars, but got 3/; - diag 'This will throw two warnings' if $] >= 5.008008 and $] < 5.009; + diag 'This will throw two warnings' if "$]" >= 5.008008 and "$]" < 5.009; local $@; eval q[ - use Lexical::Types as => sub { qw/a b c/ }; + use Lexical::Types as => sub { qw }; my LTT $x; ]; like $@, $expect, 'as => code, returning three scalars'; @@ -108,5 +115,26 @@ use Test::More tests => 12 + 6; like $@, $expect, 'as => code, initializing by returning two scalars'; } +{ + my $expect = qr/^banana at \(eval \d+\) line 2/; + diag 'This will throw two more warnings' if "$]" >= 5.008008 and "$]" < 5.009; + local $@; + eval q[ + use Lexical::Types as => sub { die 'banana' }; + my LTT $x; + ]; + like $@, $expect, 'as => sub { die }'; +} + +{ + my $expect = qr/^coconut at \Q$0\E line 31/; + local $@; + eval q[ + use Lexical::Types; + my Lexical::Types::Test::LTT3 $x; + ]; + like $@, $expect, 'die in TYPEDSCALAR'; +} + my LTT $x; is $x, undef, 'out of scope';