X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=t%2Ftestwide.t;h=3395b722214f480bd20ac791eb9db382400d9f62;hb=c514d57dc8088e1f4d3f51857b1155c20085c296;hp=f194d0edff6f0ffd54e185db62090a69715581e9;hpb=880633cc084e9d787eb9f760d3851c5d660db17c;p=perltidy.git diff --git a/t/testwide.t b/t/testwide.t index f194d0e..3395b72 100755 --- a/t/testwide.t +++ b/t/testwide.t @@ -3,10 +3,9 @@ use utf8; use Test; use Carp; use FindBin; -BEGIN {unshift @INC, "./"} -BEGIN {plan tests => 3} -use Perl::Tidy; - +BEGIN { unshift @INC, "./" } +BEGIN { plan tests => 3 } +use Perl::Tidy; my $source = <<'EOM'; %pangrams=("Plain","ASCII", @@ -15,7 +14,7 @@ my $source = <<'EOM'; "Любя, съешь щипцы, — вздохнёт мэр, — кайф жгуч.","RU"); EOM -my $expected_output=<<'EOM'; +my $expected_output = <<'EOM'; %pangrams = ( "Plain", "ASCII", "Zwölf große Boxkämpfer jagen Vik quer über den Sylter.", "DE", @@ -30,6 +29,8 @@ EOM my $output; +# The source is in character mode here, so perltidy will not decode. +# So here we do not need to set -eos or -neos Perl::Tidy::perltidy( source => \$source, destination => \$output, @@ -37,7 +38,7 @@ Perl::Tidy::perltidy( argv => '-nsyn', ); -ok($output, $expected_output); +ok( $output, $expected_output ); Perl::Tidy::perltidy( source => $FindBin::Bin . '/testwide.pl.src', @@ -46,7 +47,21 @@ Perl::Tidy::perltidy( argv => '-nsyn', ); -ok($output, $expected_output); +# We have to be careful here ... In this test we are comparing $output to a +# source string which is in character mode (since it is in this file declared +# with 'use utf8'). We need to compare strings which have the same storage +# mode. + +# The internal storage mode of $output was character mode (decoded) for +# vesions prior to 20220217.02, but is byte mode (encoded) for the latest +# version of perltidy. + +# The following statement will decode $output if it is stored in byte mode, +# and leave it unchanged (and return an error) otherwise. So this will work +# with all version of perltidy. See https://perldoc.perl.org/utf8 +utf8::decode($output); + +ok( $output, $expected_output ); # Test writing encoded output to stdout with the -st flag # References: RT #133166, RT #133171, git #35 @@ -66,7 +81,7 @@ do { source => \$source, ##destination => ... we are using -st, so no destination is specified perltidyrc => \$perltidyrc, - argv => '-nsyn -st', # added -st + argv => '-nsyn -st', # added -st ); close STDOUT; @@ -77,5 +92,5 @@ do { while ( my $line = ) { $output .= $line } }; -ok($output, $expected_output); +ok( $output, $expected_output );