This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
t/comp: use \Q\E to avoid manual escaping
authorNicolas R <atoomic@cpan.org>
Wed, 12 Aug 2020 22:04:30 +0000 (17:04 -0500)
committerNicolas R <atoomic@cpan.org>
Wed, 12 Aug 2020 22:47:14 +0000 (17:47 -0500)
This is avoiding some manual escaping,
fixes some test where '.' was not escaped
and also improve readability of the unit test itself.

t/comp/require.t
t/comp/use.t

index c4889bb..0db47d1 100644 (file)
@@ -80,7 +80,7 @@ print "# $@\nnot " if $@;
 print "ok ",$i++," - require v5 ignores sub named v5\n";
 
 eval { require 10.0.2; };
-print "# $@\nnot " unless $@ =~ /^Perl v10\.0\.2 required/;
+print "# $@\nnot " unless $@ =~ /^\QPerl v10.0.2 required\E/;
 print "ok ",$i++," - require 10.0.2\n";
 
 my $ver = 5.005_63;
@@ -91,12 +91,12 @@ print "ok ",$i++," - require 5.005_63\n";
 # check inaccurate fp
 $ver = 10.2;
 eval { require $ver; };
-print "# $@\nnot " unless $@ =~ /^Perl v10\.200.0 required/;
+print "# $@\nnot " unless $@ =~ /^\QPerl v10.200.0 required\E/;
 print "ok ",$i++," - require 10.2\n";
 
 $ver = 10.000_02;
 eval { require $ver; };
-print "# $@\nnot " unless $@ =~ /^Perl v10\.0\.20 required/;
+print "# $@\nnot " unless $@ =~ /^\QPerl v10.0.20 required\E/;
 print "ok ",$i++," - require 10.000_02\n";
 
 print "not " unless 5.5.1 gt v5.5;
@@ -155,7 +155,7 @@ for my $expected_compile (1,0) {
 do_require "1)\n";
 # bison says 'parse error' instead of 'syntax error',
 # various yaccs may or may not capitalize 'syntax'.
-print "# $@\nnot " unless $@ =~ /(syntax|parse) error/mi;
+print "# $@\nnot " unless $@ =~ /(?:syntax|parse) error/mi;
 print "ok ",$i++," - syntax error\n";
 
 # previous failure cached in %INC
index 12409cf..a8c3ed0 100644 (file)
@@ -87,7 +87,7 @@ eval q{ use v5.5.630; };
 is ($@, '');
 
 eval q{ use 10.0.2; };
-like ($@, qr/^Perl v10\.0\.2 required/);
+like ($@, qr/^\QPerl v10.0.2 required\E/);
 
 eval "use 5.000";      # implicit semicolon
 is ($@, '');
@@ -96,28 +96,28 @@ eval "use 5.000;";
 is ($@, '');
 
 eval "use 6.000;";
-like ($@, qr/Perl v6\.0\.0 required--this is only \Q$^V\E, stopped/);
+like ($@, qr/\QPerl v6.0.0 required--this is only $^V, stopped\E/);
 
 eval "no 6.000;";
 is ($@, '');
 
 eval "no 5.000;";
-like ($@, qr/Perls since v5\.0\.0 too modern--this is \Q$^V\E, stopped/);
+like ($@, qr/\QPerls since v5.0.0 too modern--this is $^V, stopped\E/);
 
 eval "use 5.6;";
-like ($@, qr/Perl v5\.600\.0 required \(did you mean v5\.6\.0\?\)--this is only \Q$^V\E, stopped/);
+like ($@, qr/\QPerl v5.600.0 required (did you mean v5.6.0?)--this is only $^V, stopped\E/);
 
 eval "use 5.8;";
-like ($@, qr/Perl v5\.800\.0 required \(did you mean v5\.8\.0\?\)--this is only \Q$^V\E, stopped/);
+like ($@, qr/\QPerl v5.800.0 required (did you mean v5.8.0?)--this is only $^V, stopped\E/);
 
 eval "use 5.9;";
-like ($@, qr/Perl v5\.900\.0 required \(did you mean v5\.9\.0\?\)--this is only \Q$^V\E, stopped/);
+like ($@, qr/\QPerl v5.900.0 required (did you mean v5.9.0?)--this is only $^V, stopped\E/);
 
 eval "use 5.10;";
-like ($@, qr/Perl v5\.100\.0 required \(did you mean v5\.10\.0\?\)--this is only \Q$^V\E, stopped/);
+like ($@, qr/\QPerl v5.100.0 required (did you mean v5.10.0?)--this is only $^V, stopped\E/);
 
 eval "use 5.11;";
-like ($@, qr/Perl v5\.110\.0 required \(did you mean v5\.11\.0\?\)--this is only \Q$^V\E, stopped/);
+like ($@, qr/\QPerl v5.110.0 required (did you mean v5.11.0?)--this is only $^V, stopped\E/);
 
 eval sprintf "use %.6f;", $];
 is ($@, '');
@@ -127,14 +127,14 @@ eval sprintf "use %.6f;", $] - 0.000001;
 is ($@, '');
 
 eval sprintf("use %.6f;", $] + 1);
-like ($@, qr/Perl v6.\d+.\d+ required--this is only \Q$^V\E, stopped/);
+like ($@, qr/Perl v6\.\d+\.\d+ required--this is only \Q$^V\E, stopped/a);
 
 eval sprintf "use %.6f;", $] + 0.00001;
-like ($@, qr/Perl v5.\d+.\d+ required--this is only \Q$^V\E, stopped/);
+like ($@, qr/Perl v5\.\d+\.\d+ required--this is only \Q$^V\E, stopped/a);
 
 # check that "use 5.11.0" (and higher) loads strictures
 eval 'use 5.11.0; ${"foo"} = "bar";';
-like ($@, qr/Can't use string \("foo"\) as a SCALAR ref while "strict refs" in use/);
+like ($@, qr/\QCan't use string ("foo") as a SCALAR ref while "strict refs" in use\E/);
 # but that they can be disabled
 eval 'use 5.11.0; no strict "refs"; ${"foo"} = "bar";';
 is ($@, "");
@@ -202,39 +202,39 @@ is("@test_use::got", "joe");
     is ($@, '');
 
     eval "use test_use v100.105";
-    like ($@, qr/test_use version v100.105.0 required--this is only version v35\.360\.0/);
+    like ($@, qr/\Qtest_use version v100.105.0 required--this is only version v35.360.0\E/);
 
     eval "use test_use 33.55";
     is ($@, '');
 
     eval "use test_use 100.105";
-    like ($@, qr/test_use version 100.105 required--this is only version 35.36/);
+    like ($@, qr/\Qtest_use version 100.105 required--this is only version 35.36\E/);
 
     local $test_use::VERSION = '35.36';
     eval "use test_use v33.55";
     like ($@, '');
 
     eval "use test_use v100.105";
-    like ($@, qr/test_use version v100.105.0 required--this is only version v35\.360\.0/);
+    like ($@, qr/\Qtest_use version v100.105.0 required--this is only version v35.360.0\E/);
 
     eval "use test_use 33.55";
     is ($@, '');
 
     eval "use test_use 100.105";
-    like ($@, qr/test_use version 100.105 required--this is only version 35.36/);
+    like ($@, qr/\Qtest_use version 100.105 required--this is only version 35.36\E/);
 
     local $test_use::VERSION = v35.36;
     eval "use test_use v33.55";
     is ($@, '');
 
     eval "use test_use v100.105";
-    like ($@, qr/test_use version v100.105.0 required--this is only version v35\.36\.0/);
+    like ($@, qr/\Qtest_use version v100.105.0 required--this is only version v35.36.0\E/);
 
     eval "use test_use 33.55";
     is ($@, '');
 
     eval "use test_use 100.105";
-    like ($@, qr/test_use version 100.105 required--this is only version v35.36/);
+    like ($@, qr/\Qtest_use version 100.105 required--this is only version v35.36\E/);
 }
 
 
@@ -243,7 +243,7 @@ is("@test_use::got", "joe");
     #   Check that a .pm file with no package or VERSION doesn't core.
     # (git commit 2658f4d9934aba5f8b23afcc078dc12b3a40223)
     eval "use test_use_14937 3";
-    like ($@, qr/^test_use_14937 defines neither package nor VERSION--version check failed at/);
+    like ($@, qr/^\Qtest_use_14937 defines neither package nor VERSION--version check failed at\E/);
 }
 
 my @ver = split /\./, sprintf "%vd", $^V;
@@ -277,7 +277,7 @@ foreach my $index (-3..+3) {
        if ($index > 0) {
            # The future
            like ($@,
-                 qr/Perl $v_version required--this is only \Q$^V\E, stopped/,
+                 qr/\QPerl $v_version required--this is only $^V, stopped\E/,
                  "use $version");
        } else {
            # The present or past
@@ -288,7 +288,7 @@ foreach my $index (-3..+3) {
        if ($index <= 0) {
            # The present or past
            like ($@,
-                 qr/Perls since $v_version too modern--this is \Q$^V\E, stopped/,
+                 qr/\QPerls since $v_version too modern--this is $^V, stopped\E/,
                  "no $version");
        } else {
            # future