xref: /openbsd-src/gnu/usr.bin/perl/cpan/Encode/t/Unicode_trailing_nul.t (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
1*f2a19305Safresh1BEGIN {
2*f2a19305Safresh1    if ( $] < 5.009 ) {
3*f2a19305Safresh1        print "1..0 # Skip: Perl <= 5.9 or later required\n";
4*f2a19305Safresh1        exit 0;
5*f2a19305Safresh1    }
6*f2a19305Safresh1}
7256a93a4Safresh1use strict;
8256a93a4Safresh1use Test::More;
9256a93a4Safresh1
10256a93a4Safresh1use Encode;
11256a93a4Safresh1use File::Temp;
12256a93a4Safresh1use File::Spec;
13256a93a4Safresh1
14256a93a4Safresh1# This test relies on https://github.com/Perl/perl5/issues/10623;
15256a93a4Safresh1# if that bug is ever fixed then this test may never fail again.
16256a93a4Safresh1
17256a93a4Safresh1my $foo = Encode::decode("UTF-16LE", "/\0v\0a\0r\0/\0f\0f\0f\0f\0f\0f\0/\0u\0s\0e\0r\0s\0/\0s\0u\0p\0e\0r\0m\0a\0n\0");
18256a93a4Safresh1
19256a93a4Safresh1my ($fh, $path) = File::Temp::tempfile( CLEANUP => 1 );
20256a93a4Safresh1
21256a93a4Safresh1note "temp file: $path";
22256a93a4Safresh1
23256a93a4Safresh1# Perl gives the internal PV to exec .. which is buggy/wrong but
24256a93a4Safresh1# useful here:
25256a93a4Safresh1system( $^X, '-e', "open my \$fh, '>>', '$path' or die \$!; print {\$fh} \$ARGV[0]", $foo );
26256a93a4Safresh1die if $?;
27256a93a4Safresh1
28256a93a4Safresh1my $output = do { local $/; <$fh> };
29256a93a4Safresh1
30256a93a4Safresh1is( $output, "/var/ffffff/users/superman", 'UTF-16 decodes with trailing NUL' );
31256a93a4Safresh1
32256a93a4Safresh1done_testing();
33