diff options
author | Nicholas Clark <nick@ccl4.org> | 2010-09-24 11:46:41 +0100 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2010-09-24 11:48:51 +0100 |
commit | 3d7a9343ce805daaa050171aecb0ab4f37fed18d (patch) | |
tree | 2c1d85cf2322479ecbeae64339ef052603ba25a7 /t | |
parent | bf70f4101a9bd4064c4bc7f03a677f4227ad79a4 (diff) | |
download | perl-3d7a9343ce805daaa050171aecb0ab4f37fed18d.tar.gz |
Add a warning to test.pl if quotes are used in one-liners.
Fix all the tests that were using quotes, and (by implication) working
because barewords are treated as strings, and one-liners aren't run under
strict.
Diffstat (limited to 't')
-rw-r--r-- | t/op/array.t | 2 | ||||
-rw-r--r-- | t/op/gv.t | 2 | ||||
-rw-r--r-- | t/op/ref.t | 4 | ||||
-rw-r--r-- | t/run/switches.t | 12 | ||||
-rw-r--r-- | t/test.pl | 4 |
5 files changed, 14 insertions, 10 deletions
diff --git a/t/op/array.t b/t/op/array.t index e36fd287ed..f100e2d2df 100644 --- a/t/op/array.t +++ b/t/op/array.t @@ -276,7 +276,7 @@ tary(); my $got = runperl ( prog => q{ sub X::DESTROY { @a = () } - @a = (bless {}, 'X'); + @a = (bless {}, q{X}); @a = (); }, stderr => 1 @@ -286,7 +286,7 @@ $| = 1; sub DESTROY {eval {die qq{Farewell $_[0]}}; print $@} package main; -bless \$A::B, 'M'; +bless \$A::B, q{M}; *A:: = \*B::; EOPROG like($output, qr/^Farewell M=SCALAR/, "DESTROY was called"); diff --git a/t/op/ref.t b/t/op/ref.t index bad0168872..52a4d2a011 100644 --- a/t/op/ref.t +++ b/t/op/ref.t @@ -432,7 +432,7 @@ is ($?, 0, 'coredump on typeglob = (SvRV && !SvROK)'); # "Attempt to free unreferenced scalar" warnings is (runperl( - prog => 'use Symbol;my $x=bless \gensym,"t"; print;*$$x=$x', + prog => 'use Symbol;my $x=bless \gensym,q{t}; print;*$$x=$x', stderr => 1 ), '', 'freeing self-referential typeglob'); @@ -443,7 +443,7 @@ is (runperl( TODO: { local $TODO = "works but output through pipe is mangled" if $^O eq 'VMS'; like (runperl( - prog => '$x=bless[]; sub IO::Handle::DESTROY{$_="bad";s/bad/ok/;print}', + prog => '$x=bless[]; sub IO::Handle::DESTROY{$_=q{bad};s/bad/ok/;print}', stderr => 1 ), qr/^(ok)+$/, 'STDOUT destructor'); } diff --git a/t/run/switches.t b/t/run/switches.t index 20cb77297a..ada6eafad8 100644 --- a/t/run/switches.t +++ b/t/run/switches.t @@ -200,27 +200,27 @@ SWTESTPM '', "-MFoo::Bar allowed" ); like( runperl( switches => [ "-M:$package" ], stderr => 1, - prog => 'die "oops"' ), + prog => 'die q{oops}' ), qr/Invalid module name [\w:]+ with -M option\b/, "-M:Foo not allowed" ); like( runperl( switches => [ '-mA:B:C' ], stderr => 1, - prog => 'die "oops"' ), + prog => 'die q{oops}' ), qr/Invalid module name [\w:]+ with -m option\b/, "-mFoo:Bar not allowed" ); like( runperl( switches => [ '-m-A:B:C' ], stderr => 1, - prog => 'die "oops"' ), + prog => 'die q{oops}' ), qr/Invalid module name [\w:]+ with -m option\b/, "-m-Foo:Bar not allowed" ); like( runperl( switches => [ '-m-' ], stderr => 1, - prog => 'die "oops"' ), + prog => 'die q{oops}' ), qr/Module name required with -m option\b/, "-m- not allowed" ); like( runperl( switches => [ '-M-=' ], stderr => 1, - prog => 'die "oops"' ), + prog => 'die q{oops}' ), qr/Module name required with -M option\b/, "-M- not allowed" ); } # disable TODO on VMS @@ -293,7 +293,7 @@ foreach my $switch (split //, "ABbGgHJjKkLNOoPQqRrYyZz123456789_") local $TODO = ''; # these ones should work on VMS like( runperl( switches => ["-$switch"], stderr => 1, - prog => 'die "oops"' ), + prog => 'die q{oops}' ), qr/\QUnrecognized switch: -$switch (-h will show valid options)./, "-$switch correctly unknown" ); @@ -427,6 +427,7 @@ USE_OK # Arguments : # switches => [ command-line switches ] # nolib => 1 # don't use -I../lib (included by default) +# non_portable => Don't warn if a one liner contains quotes # prog => one-liner (avoid quotes) # progs => [ multi-liner (avoid quotes) ] # progfile => perl script @@ -480,6 +481,9 @@ sub _create_runperl { # Create the string to qx in runperl(). die "test.pl:runperl(): 'progs' must be an ARRAYREF " . _where() unless ref $args{progs} eq "ARRAY"; foreach my $prog (@{$args{progs}}) { + if ($prog =~ tr/'"// && !$args{non_portable}) { + warn "quotes in prog >>$prog<< are not portable"; + } if ($is_mswin || $is_netware || $is_vms) { $runperl = $runperl . qq ( -e "$prog" ); } |