This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add a test to ensure that test.pl doesn't mention $&
authorNicholas Clark <nick@ccl4.org>
Sun, 13 Mar 2011 17:58:29 +0000 (17:58 +0000)
committerNicholas Clark <nick@ccl4.org>
Mon, 14 Mar 2011 07:44:51 +0000 (07:44 +0000)
This will allow it to be used safely for tests that explicitly want to test the
behaviour of perl without (and with) $& having been seen by the parser.

t/porting/test_bootstrap.t

index a1bd63d..d07e659 100644 (file)
@@ -45,3 +45,18 @@ while (my $file = <$fh>) {
     unlike($contents, qr/^\s*require\s+/m, "$file doesn't use require")
        unless $file eq 'comp/require.t'
 }
+
+# There are regression tests using test.pl that don't want PL_sawampersand set
+
+# This very much relies on a bug in the regexp implementation, but for now it's
+# the best way to work out whether PL_sawampersand is true.
+# Then again, PL_sawampersand *is* a bug, for precisely the reason that this
+# test can detect the behaviour change.
+
+isnt($INC{'./test.pl'}, undef, 'We loaded test.pl');
+ok("Perl rules" =~ /Perl/, 'Perl rules');
+is(eval '$&', undef, 'Nothing in test.pl mentioned $&');
+is(eval '$`', undef, 'Nothing in test.pl mentioned $`');
+is(eval '$\'', undef, 'Nothing in test.pl mentioned $\'');
+# Currently seeing any of the 3 triggers the setting of all 3.
+# $` and $' will be '' rather than undef if the regexp sets them.