X-Git-Url: https://git.donarmstrong.com/?p=perltidy.git;a=blobdiff_plain;f=t%2Ftestwide-passthrough.t;fp=t%2Ftestwide-passthrough.t;h=643023d393ee12464d6a70e9c28bd3896a2750c4;hp=0000000000000000000000000000000000000000;hb=c514d57dc8088e1f4d3f51857b1155c20085c296;hpb=880633cc084e9d787eb9f760d3851c5d660db17c diff --git a/t/testwide-passthrough.t b/t/testwide-passthrough.t new file mode 100644 index 0000000..643023d --- /dev/null +++ b/t/testwide-passthrough.t @@ -0,0 +1,130 @@ +use strict; +use warnings; +use utf8; + +use FindBin qw($Bin); +use File::Temp qw(tempfile); +use Test::More; + +BEGIN { unshift @INC, "./" } +use Perl::Tidy; + +# This tests the -eos (--encode-output-strings) which was added for issue +# git #83 to fix an issue with tidyall. + +# NOTE: to prevent automatic conversion of line endings LF to CRLF under github +# Actions with Windows, which would cause test failure, it is essential that +# there be a file 't/.gitattributes' with the line: +# * -text + +# The test file has no tidying needs but is UTF-8 encoded, so all passes +# through perltidy should read/write identical contents (previously only +# file test behaved correctly) + +plan( tests => 6 ); + +test_all(); + +sub test_all { + my $test_file = "$Bin/testwide-passthrough.pl.src"; + test_file2file($test_file); + test_scalar2scalar($test_file); + test_scalararray2scalararray($test_file); +} + +sub test_file2file { + my $test_file = shift; + + my $tmp_file = File::Temp->new( TMPDIR => 1 ); + + my $source = $test_file; + my $destination = $tmp_file->filename(); + + note("Testing file2file: '$source' => '$destination'\n"); + + my $tidyresult = Perl::Tidy::perltidy( + argv => '-utf8 -npro', + source => $source, + destination => $destination + ); + ok( !$tidyresult, 'perltidy' ); + + my $source_str = slurp_raw($source); + my $destination_str = slurp_raw($destination); + + my $source_hex = unpack( 'H*', $source_str ); + my $destination_hex = unpack( 'H*', $destination_str ); + note("Comparing contents:\n $source_hex\n $destination_hex\n"); + + ok( $source_hex eq $destination_hex, 'file content compare' ); +} + +sub test_scalar2scalar { + my $testfile = shift; + + my $source = slurp_raw($testfile); + my $destination; + + note("Testing scalar2scalar\n"); + + my $tidyresult = Perl::Tidy::perltidy( + argv => '-utf8 -eos -npro', + source => \$source, + destination => \$destination + ); + ok( !$tidyresult, 'perltidy' ); + + my $source_hex = unpack( 'H*', $source ); + my $destination_hex = unpack( 'H*', $destination ); + + note("Comparing contents:\n $source_hex\n $destination_hex\n"); + ok( $source_hex eq $destination_hex, 'scalar content compare' ); +} + +sub test_scalararray2scalararray { + my $testfile = shift; + + my $source = [ lines_raw($testfile) ]; + my $destination = []; + + note("Testing scalararray2scalararray\n"); + + my $tidyresult = Perl::Tidy::perltidy( + argv => '-utf8 -eos -npro', + source => $source, + destination => $destination + ); + ok( !$tidyresult, 'perltidy' ); + + my $source_str = join( "", @$source ); + my $destination_str = join( "", @$destination ); + + my $source_hex = unpack( 'H*', $source_str ); + my $destination_hex = unpack( 'H*', $destination_str ); + + note("Comparing contents:\n $source_hex\n $destination_hex\n"); + ok( $source_hex eq $destination_hex, 'scalararray content compare' ); +} + +sub slurp_raw { + my $filename = shift; + + open( TMP, '<', $filename ); + binmode( TMP, ':raw' ); + local $/; + my $contents = ; + close(TMP); + + return $contents; +} + +sub lines_raw { + my $filename = shift; + + open( TMP, '<', $filename ); + binmode( TMP, ':raw' ); + my @contents = ; + close(TMP); + + return @contents; +}