-use strict;\r
-use warnings;\r
-use utf8;\r
-\r
-use FindBin qw($Bin);\r
-use File::Temp qw(tempfile);\r
-use Test::More;\r
-\r
-BEGIN {unshift @INC, "./"}\r
-use Perl::Tidy; \r
-\r
-# The test file has no tidying needs but is UTF-8 encoded, so all passes\r
-# through perltidy should read/write identical contents (previously only\r
-# file test behaved correctly)\r
-\r
-plan(tests => 6);\r
-\r
-test_all();\r
-\r
-sub test_all\r
-{\r
- my $test_file = "$Bin/testwide-passthrough.pl.src";\r
- test_file2file($test_file);\r
- test_scalar2scalar($test_file);\r
- test_scalararray2scalararray($test_file);\r
-}\r
-\r
-sub test_file2file\r
-{\r
- my $test_file = shift;\r
- \r
- my $tmp_file = File::Temp->new( TMPDIR => 1 );\r
-\r
- my $source = $test_file;\r
- my $destination = $tmp_file->filename();\r
-\r
- note("Testing file2file: '$source' => '$destination'\n");\r
-\r
- my $tidyresult = Perl::Tidy::perltidy\r
- (\r
- argv => '-utf8',\r
- source => $source,\r
- destination => $destination\r
- );\r
- ok(!$tidyresult, 'perltidy');\r
-\r
- my $source_hex = unpack('H*', slurp_raw($source));\r
- my $destination_hex = unpack('H*', slurp_raw($destination));\r
-\r
- note("Comparing contents:\n $source_hex\n $destination_hex\n");\r
- ok($source_hex eq $destination_hex, 'file content compare');\r
-}\r
-\r
-sub test_scalar2scalar\r
-{\r
- my $testfile = shift;\r
- \r
- my $source = slurp_raw($testfile);\r
- my $destination;\r
-\r
- note("Testing scalar2scalar\n");\r
-\r
- my $tidyresult = Perl::Tidy::perltidy\r
- (\r
- argv => '-utf8 -eos',\r
- source => \$source,\r
- destination => \$destination\r
- );\r
- ok(!$tidyresult, 'perltidy');\r
-\r
- my $source_hex = unpack('H*', $source);\r
- my $destination_hex = unpack('H*', $destination);\r
-\r
- note("Comparing contents:\n $source_hex\n $destination_hex\n");\r
- ok($source_hex eq $destination_hex, 'scalar content compare');\r
-}\r
-\r
-sub test_scalararray2scalararray\r
-{\r
- my $testfile = shift;\r
- \r
- my $source = [ lines_raw($testfile) ];\r
- my $destination = [];\r
-\r
- note("Testing scalararray2scalararray\n");\r
-\r
- my $tidyresult = Perl::Tidy::perltidy\r
- (\r
- argv => '-utf8 -eos',\r
- source => $source,\r
- destination => $destination\r
- );\r
- ok(!$tidyresult, 'perltidy');\r
-\r
- my $source_hex = join('', map { unpack('H*', $_) } @$source );\r
- my $destination_hex = join('', map { unpack('H*', $_) } @$destination);\r
-\r
- note("Comparing contents:\n $source_hex\n $destination_hex\n");\r
- ok($source_hex eq $destination_hex, 'scalararray content compare');\r
-}\r
-\r
-sub slurp_raw\r
-{\r
- my $filename = shift;\r
- \r
- open(TMP, '<', $filename);\r
- binmode(TMP, ':raw');\r
- local $/;\r
- my $contents = <TMP>;\r
- close(TMP);\r
- \r
- return $contents;\r
-}\r
-\r
-sub lines_raw\r
-{\r
- my $filename = shift;\r
- \r
- open(TMP, '<', $filename);\r
- binmode(TMP, ':raw');\r
- my @contents = <TMP>;\r
- close(TMP);\r
- \r
- return @contents;\r
-}\r
+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.
+
+# 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)
+
+# The original version did hex compares of source and destination streams. To
+# just test the -eos flag, and avoid line ending issues, this version does
+# line-by-line hex tests on chomped lines.
+
+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',
+ 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');
+ ok( hex_compare_by_lines( $source_str, $destination_str ) );
+}
+
+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',
+ 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');
+ ok( hex_compare_by_lines( $source, $destination ),
+ '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',
+ 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');
+ ok( hex_compare_by_lines( $source_str, $destination_str ),
+ 'scalararray content compare' );
+}
+
+sub slurp_raw {
+ my $filename = shift;
+
+ open( TMP, '<', $filename );
+ binmode( TMP, ':raw' );
+ local $/;
+ my $contents = <TMP>;
+ close(TMP);
+
+ return $contents;
+}
+
+sub lines_raw {
+ my $filename = shift;
+
+ open( TMP, '<', $filename );
+ binmode( TMP, ':raw' );
+ my @contents = <TMP>;
+ close(TMP);
+
+ return @contents;
+}
+
+sub hex_compare_by_lines {
+ my ( $source_str, $destination_str ) = @_;
+
+ my @source = split /^/m, $source_str;
+ my @destination = split /^/m, $destination_str;
+
+ while (@source) {
+ my $ss = pop(@source);
+ my $dd = pop(@destination);
+ chomp $ss;
+ chomp $dd;
+ $ss = unpack( 'H*', $ss );
+ $dd = unpack( 'H*', $dd );
+ last if $ss ne $dd;
+ }
+ return !@source && !@destination;
+}
+
-use strict;\r
-use warnings;\r
-use utf8;\r
-\r
-use FindBin qw($Bin);\r
-use File::Temp qw(tempfile);\r
-use Test::More;\r
-\r
-BEGIN {unshift @INC, "./"}\r
-use Perl::Tidy; \r
-\r
-# The test file is UTF-8 encoded\r
-\r
-plan(tests => 6);\r
-\r
-test_all();\r
-\r
-sub test_all\r
-{\r
- my $test_file = "$Bin/testwide-tidy.pl.src";\r
- my $tidy_file = "$Bin/testwide-tidy.pl.srctdy";\r
- my $tidy_hex = unpack('H*', slurp_raw($tidy_file));\r
- test_file2file($test_file, $tidy_hex);\r
- test_scalar2scalar($test_file, $tidy_hex);\r
- test_scalararray2scalararray($test_file, $tidy_hex);\r
-}\r
-\r
-sub test_file2file\r
-{\r
- my $test_file = shift;\r
- my $tidy_hex = shift;\r
-\r
- my $tmp_file = File::Temp->new( TMPDIR => 1 );\r
-\r
- my $source = $test_file;\r
- my $destination = $tmp_file->filename();\r
-\r
- note("Testing file2file: '$source' => '$destination'\n");\r
-\r
- my $tidyresult = Perl::Tidy::perltidy\r
- (\r
- argv => '-utf8',\r
- source => $source,\r
- destination => $destination\r
- );\r
- ok(!$tidyresult, 'perltidy');\r
-\r
- my $destination_hex = unpack('H*', slurp_raw($destination));\r
-\r
- note("Comparing contents:\n $tidy_hex\n $destination_hex\n");\r
- ok($tidy_hex eq $destination_hex, 'file content compare');\r
-}\r
-\r
-sub test_scalar2scalar\r
-{\r
- my $test_file = shift;\r
- my $tidy_hex = shift;\r
- \r
- my $source = slurp_raw($test_file);\r
- my $destination;\r
-\r
- note("Testing scalar2scalar\n");\r
-\r
- my $tidyresult = Perl::Tidy::perltidy\r
- (\r
- argv => '-utf8 -eos',\r
- source => \$source,\r
- destination => \$destination\r
- );\r
- ok(!$tidyresult, 'perltidy');\r
-\r
- my $destination_hex = unpack('H*', $destination);\r
-\r
- note("Comparing contents:\n $tidy_hex\n $destination_hex\n");\r
- ok($tidy_hex eq $destination_hex, 'scalar content compare');\r
-}\r
-\r
-sub test_scalararray2scalararray\r
-{\r
- my $test_file = shift;\r
- my $tidy_hex = shift;\r
- \r
- my $source = [ lines_raw($test_file) ];\r
- my $destination = [];\r
-\r
- note("Testing scalararray2scalararray\n");\r
-\r
- my $tidyresult = Perl::Tidy::perltidy\r
- (\r
- argv => '-utf8 -eos',\r
- source => $source,\r
- destination => $destination\r
- );\r
- ok(!$tidyresult, 'perltidy');\r
-\r
- my $destination_hex = join('', map { unpack('H*', $_) } @$destination);\r
-\r
- note("Comparing contents:\n $tidy_hex\n $destination_hex\n");\r
- ok($tidy_hex eq $destination_hex, 'scalararray content compare');\r
-}\r
-\r
-sub slurp_raw\r
-{\r
- my $filename = shift;\r
- \r
- open(TMP, '<', $filename);\r
- binmode(TMP, ':raw');\r
- local $/;\r
- my $contents = <TMP>;\r
- close(TMP);\r
- \r
- return $contents;\r
-}\r
-\r
-sub lines_raw\r
-{\r
- my $filename = shift;\r
- \r
- open(TMP, '<', $filename);\r
- binmode(TMP, ':raw');\r
- my @contents = <TMP>;\r
- close(TMP);\r
- \r
- return @contents;\r
-}\r
+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.
+
+# The test file is UTF-8 encoded
+
+# The original version did hex compares of source and destination streams. To
+# just test the -eos flag, and avoid line ending issues, this version does
+# line-by-line hex tests on chomped lines.
+
+plan( tests => 6 );
+
+test_all();
+
+sub test_all {
+ my $test_file = "$Bin/testwide-tidy.pl.src";
+ my $tidy_file = "$Bin/testwide-tidy.pl.srctdy";
+ my $tidy_str = slurp_raw($tidy_file);
+ test_file2file( $test_file, $tidy_str );
+ test_scalar2scalar( $test_file, $tidy_str );
+ test_scalararray2scalararray( $test_file, $tidy_str );
+}
+
+sub test_file2file {
+ my $test_file = shift;
+ my $tidy_str = shift;
+ my $tidy_hex = unpack( 'H*', $tidy_str );
+
+ 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',
+ source => $source,
+ destination => $destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $destination_str = slurp_raw($destination);
+ my $destination_hex = unpack( 'H*', $destination_str );
+
+ note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
+ ##ok($tidy_hex eq $destination_hex, 'file content compare');
+ ok( hex_compare_by_lines( $tidy_str, $destination_str ),
+ 'file2file content compare' );
+}
+
+sub test_scalar2scalar {
+ my $test_file = shift;
+ my $tidy_str = shift;
+ my $tidy_hex = unpack( 'H*', $tidy_str );
+
+ my $source = slurp_raw($test_file);
+ my $destination;
+
+ note("Testing scalar2scalar\n");
+
+ my $tidyresult = Perl::Tidy::perltidy(
+ argv => '-utf8 -eos',
+ source => \$source,
+ destination => \$destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $destination_hex = unpack( 'H*', $destination );
+
+ note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
+ ##ok($tidy_hex eq $destination_hex, 'scalar content compare');
+ ok( hex_compare_by_lines( $tidy_str, $destination ),
+ 'scalar2scalar content compare' );
+}
+
+sub test_scalararray2scalararray {
+ my $test_file = shift;
+ my $tidy_str = shift;
+ my $tidy_hex = unpack( 'H*', $tidy_str );
+
+ my $source = [ lines_raw($test_file) ];
+ my $destination = [];
+
+ note("Testing scalararray2scalararray\n");
+
+ my $tidyresult = Perl::Tidy::perltidy(
+ argv => '-utf8 -eos',
+ source => $source,
+ destination => $destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $destination_str = join( '', @$destination );
+ my $destination_hex = unpack( 'H*', $destination_str );
+
+ note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
+ ##ok($tidy_hex eq $destination_hex, 'scalararray content compare');
+ ok( hex_compare_by_lines( $tidy_str, $destination_str ),
+ 'scalararray content compare' );
+}
+
+sub slurp_raw {
+ my $filename = shift;
+
+ open( TMP, '<', $filename );
+ binmode( TMP, ':raw' );
+ local $/;
+ my $contents = <TMP>;
+ close(TMP);
+
+ return $contents;
+}
+
+sub lines_raw {
+ my $filename = shift;
+
+ open( TMP, '<', $filename );
+ binmode( TMP, ':raw' );
+ my @contents = <TMP>;
+ close(TMP);
+
+ return @contents;
+}
+
+sub hex_compare_by_lines {
+ my ( $source_str, $destination_str ) = @_;
+
+ my @source = split /^/m, $source_str;
+ my @destination = split /^/m, $destination_str;
+
+ while (@source) {
+ my $ss = pop(@source);
+ my $dd = pop(@destination);
+ chomp $ss;
+ chomp $dd;
+ $ss = unpack( 'H*', $ss );
+ $dd = unpack( 'H*', $dd );
+ last if $ss ne $dd;
+ }
+ return !@source && !@destination;
+}