This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add .t for malformed-UTF-8 toke.c testing
authorKarl Williamson <khw@cpan.org>
Tue, 7 Feb 2017 20:12:36 +0000 (13:12 -0700)
committerKarl Williamson <khw@cpan.org>
Tue, 7 Feb 2017 20:26:33 +0000 (13:26 -0700)
This adds a non-UTF-8 encoded file to make it easier to test malformed
UTF-8 strings.  The file is automatically skipped on EBCDIC platforms.

The file is initialized with a test for [perl #129037], which had
already been unknowingly fixed by commit
75219bacf5aacd315b96083de24e82cd8238e99a

MANIFEST
t/lib/common.pl
t/lib/croak/toke_l1 [new file with mode: 0644]

index 9b5720a..3552b60 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -5333,6 +5333,7 @@ t/lib/croak/pp_ctl                Test croak calls from pp_ctl.c
 t/lib/croak/pp_hot             Test croak calls from pp_hot.c
 t/lib/croak/pp_sys             Test croak calls from pp_sys.c
 t/lib/croak/toke               Test croak calls from toke.c
+t/lib/croak/toke_l1            Test croak calls from toke.c; file is not UTF-8 encoded
 t/lib/cygwin.t                 Builtin cygwin function tests
 t/lib/dbmt_common.pl           Common functionality for ?DBM_File tests
 t/lib/deprecate.t              Test deprecate.pm
index 561e1ff..9c7060f 100644 (file)
@@ -31,6 +31,10 @@ if (@ARGV) {
                         glob catfile(curdir(), "lib", $pragma_name, "*");
 }
 
+if ($::IS_EBCDIC) { # Skip Latin1 files
+    @w_files = grep { $_ !~ / _l1 $/x } @w_files
+}
+
 my ($tests, @prgs) = setup_multiple_progs(@w_files);
 
 $^X = rel2abs($^X);
diff --git a/t/lib/croak/toke_l1 b/t/lib/croak/toke_l1
new file mode 100644 (file)
index 0000000..9a2c993
--- /dev/null
@@ -0,0 +1,9 @@
+# File is encoded in latin-1 so can have malformed-utf8
+__END__
+# NAME [perl #129037]
+BEGIN{{};$^H=-1}0Ã
+EXPECT
+Malformed UTF-8 character: \xc3\x0a (unexpected non-continuation byte 0x0a, immediately after start byte 0xc3; need 2 bytes, got 1) at - line 1.
+Constant(0): $^H{integer} is not defined at - line 1, at end of line
+Malformed UTF-8 character (fatal) at - line 1.
+########