X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=blobdiff_plain;f=t%2F20-good.t;h=d57de4f0cc009fe71835634ebbfa3f1790c410ff;hp=12a4a76bb6b5adcddd4bdceba487f8ced4120cc5;hb=refs%2Ftags%2Frt83839;hpb=ce2df2b3143e49d1d1531f6f76e270b973dffad2 diff --git a/t/20-good.t b/t/20-good.t index 12a4a76..d57de4f 100644 --- a/t/20-good.t +++ b/t/20-good.t @@ -9,7 +9,7 @@ package main; use strict; use warnings; -use Test::More tests => 74 * 8; +use Test::More tests => 112 * 8 + 10; BEGIN { delete $ENV{PERL_INDIRECT_PM_DISABLE} } @@ -71,6 +71,98 @@ SKIP: } } +# These tests must be run outside of eval to be meaningful. +{ + sub Zlott::Owww::new { } + + my (@warns, $hook, $desc, $id); + BEGIN { + $hook = sub { push @warns, indirect::msg(@_) }; + $desc = "test sort and line endings %d: no indirect construct"; + $id = 1; + } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + }; + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } + + BEGIN { @warns = () } + { + no indirect hook => $hook; + my @stuff = sort Zlott::Owww + ->new; + } + BEGIN { is_deeply \@warns, [ ], sprintf $desc, $id++ } +} + __DATA__ $obj = Hlagh->new; @@ -155,7 +247,7 @@ $obj = $pkg -> ($cb) (); #### $obj = $pkg->$cb( $obj ); #### -$obj = $pkg->$cb(qw/foo bar baz/); +$obj = $pkg->$cb(qw); #### $obj = $pkg->$meth; #### @@ -192,9 +284,9 @@ meh $x, 1, 2; meh $y; #### meh $y, 1, 2; -#### $] < 5.010 # use feature 'state'; state $z +#### "$]" < 5.010 # use feature 'state'; state $z meh $z; -#### $] < 5.010 # use feature 'state'; state $z +#### "$]" < 5.010 # use feature 'state'; state $z meh $z, 1, 2; #### print; @@ -208,9 +300,9 @@ print $x "oh hai\n"; print $y; #### print $y "dongs\n"; -#### $] < 5.010 # use feature 'state'; state $z +#### "$]" < 5.010 # use feature 'state'; state $z print $z; -#### $] < 5.010 # use feature 'state'; state $z +#### "$]" < 5.010 # use feature 'state'; state $z print $z "hlagh\n"; #### print STDOUT "bananananananana\n"; @@ -240,6 +332,60 @@ $obj = "apple @{[$x->$meth]} pear" $obj = "apple ${\($y->$meth)} pear" #### $obj = "apple @{[$y->$meth]} pear" +#### # local $_ = "foo"; +s/foo/return; Hlagh->new/e; +#### # local $_ = "bar"; +s/foo/return; Hlagh->new/e; +#### # local $_ = "foo"; +s/foo/return; Hlagh->$cb/e; +#### # local $_ = "bar"; +s/foo/return; Hlagh->$cb/e; +#### # local $_ = "foo"; +s/foo/return; Hlagh->$meth/e; +#### # local $_ = "bar"; +s/foo/return; Hlagh->$meth/e; +#### # local $_ = "foo"; +s/foo/return; $x->new/e; +#### # local $_ = "bar"; +s/foo/return; $x->new/e; +#### # local $_ = "foo"; +s/foo/return; $x->$cb/e; +#### # local $_ = "bar"; +s/foo/return; $x->$cb/e; +#### # local $_ = "foo"; +s/foo/return; $x->$meth/e; +#### # local $_ = "bar"; +s/foo/return; $x->$meth/e; +#### # local $_ = "foo"; +s/foo/return; $y->new/e; +#### # local $_ = "bar"; +s/foo/return; $y->new/e; +#### # local $_ = "foo"; +s/foo/return; $y->$cb/e; +#### # local $_ = "bar"; +s/foo/return; $y->$cb/e; +#### # local $_ = "foo"; +s/foo/return; $y->$meth/e; +#### # local $_ = "bar"; +s/foo/return; $y->$meth/e; +#### +"foo" =~ /(?{Hlagh->new})/; +#### +"foo" =~ /(?{Hlagh->$cb})/; +#### +"foo" =~ /(?{Hlagh->$meth})/; +#### +"foo" =~ /(?{$x->new})/; +#### +"foo" =~ /(?{$x->$cb})/; +#### +"foo" =~ /(?{$x->$meth})/; +#### +"foo" =~ /(?{$y->new})/; +#### +"foo" =~ /(?{$y->$cb})/; +#### +"foo" =~ /(?{$y->$meth})/; #### exec $x $x, @a; #### @@ -256,3 +402,42 @@ zap { 1; }; zap { 1; 1; }; #### zap { zap { }; 1; }; +#### +my @stuff = sort Hlagh + ->new; +#### +my @stuff = sort Hlagh + ->new; +#### +my @stuff = sort Hlagh + ->new; +#### +my @stuff = sort Hlagh + ->new; +#### +my @stuff = sort Hlagh + ->new; +#### +my @stuff = sort Hlagh + ->new; +#### +my @stuff = sort Hlagh + ->new; +#### +my @stuff = sort Hlagh + ->new; +#### +sub { + my $self = shift; + return $self->new ? $self : undef; +} +#### +sub { + my $self = shift; + return $self ? $self->new : undef; +} +#### +sub { + my $self = shift; + return $_[0] ? undef : $self->new; +}