t/re/anyof.t: Add capability to utf8::upgrade()
authorKarl Williamson <khw@cpan.org>
Sat, 22 Dec 2018 18:00:54 +0000 (11:00 -0700)
committerKarl Williamson <khw@cpan.org>
Tue, 25 Dec 2018 16:08:10 +0000 (09:08 -0700)
ANYOF nodes can generate different things depending on the UTF-8ness of
the pattern.  This adds the capability of conveniently specifying in a
test that the pattern should be upgraded

t/re/anyof.t

index 38dd7c3..38400b1 100644 (file)
@@ -31,6 +31,9 @@ BEGIN {
 # differences are skipped on EBCDIC.  They are all at the beginning of the
 # array, and a special marker entry is used to delmit the boundary between
 # skipped and not skipped.
+#
+# NOTE:  If the pattern contains (?8) it will be upgraded to UTF-8 after
+#        stripping that
 
 my @tests = (
     '[[{]' => 'ANYOFM[\[\{]',
@@ -338,8 +341,11 @@ while (defined (my $test = shift @tests)) {
         # platform
         $test =~ s/\{INFTY\}/$highest_cp/g;
         $test =~ s/\{INFTY_minus_1\}/$next_highest_cp/g;
+        my $use_utf8 = ($test =~ s/\Q(?8)//);
 
-        $test = "qr/$test/";
+        $test = "my \$a = '$test';";
+        $test .= "utf8::upgrade(\$a);" if $use_utf8;
+        $test .= "qr/\$a/";
         my $actual_test = "use re qw(Debug COMPILE); $test";
 
         my $result = fresh_perl($actual_test);