From: Roy Ivy III Date: Sat, 9 Mar 2019 07:38:57 +0000 (-0600) Subject: add EOL testing X-Git-Tag: 20190601~12^2^2~1 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=ade018441d7bea360d0764864008066d572360d3;p=perltidy.git add EOL testing * fails (under Windows) for file output with UTF-8 encoding --- diff --git a/t/test-eol.t b/t/test-eol.t new file mode 100644 index 00000000..65188cca --- /dev/null +++ b/t/test-eol.t @@ -0,0 +1,131 @@ +use strict; +use File::Temp; +use Test; +use Carp; +BEGIN {plan tests => 4} +use Perl::Tidy; + + +#---------------------------------------------------------------------- +## test string->string +#---------------------------------------------------------------------- +my $source_template = <<'EOM'; +%height=("letter",27.9, "legal",35.6, "arche",121.9, "archd",91.4, "archc",61, + "archb",45.7, "archa",30.5, "flsa",33, "flse",33, "halfletter",21.6, + "11x17",43.2, "ledger",27.9); +%width=("letter",21.6, "legal",21.6, "arche",91.4, "archd",61, "archc",45.7, + "archb",30.5, "archa",22.9, "flsa",21.6, "flse",21.6, "halfletter",14, + "11x17",27.9, "ledger",43.2); +EOM + +my $perltidyrc; + +my $expected_output_template=<<'EOM'; +%height = ( + "letter", 27.9, "legal", 35.6, "arche", 121.9, + "archd", 91.4, "archc", 61, "archb", 45.7, + "archa", 30.5, "flsa", 33, "flse", 33, + "halfletter", 21.6, "11x17", 43.2, "ledger", 27.9 + ); +%width = ( + "letter", 21.6, "legal", 21.6, "arche", 91.4, + "archd", 61, "archc", 45.7, "archb", 30.5, + "archa", 22.9, "flsa", 21.6, "flse", 21.6, + "halfletter", 14, "11x17", 27.9, "ledger", 43.2 + ); +EOM + +my $source; +my $output; +my $expected_output; + +my $CR = chr(015); +my $LF = chr(012); + +$perltidyrc = <<'EOM'; +-gnu +--output-line-ending="unix" # use *nix LF EOLs +EOM + +$source = $source_template; +$source =~ s/\n/$CR$LF/gmsx; +$expected_output = $expected_output_template; +$expected_output =~ s/\n/$LF/gmsx; + +# my ($source_fh, $source_filename) = File::Temp::tempfile(); close $source_filename; +my ($output_fh, $output_filename) = File::Temp::tempfile(); close $output_filename; + +# print STDERR "# source_filename = ", $source_filename, "\n"; +# print STDERR "# output_filename = ", $output_filename, "\n"; + +# open $source_fh, ">", $source_filename; +# binmode $source_fh, ":raw"; +# print $source_fh $source; +# close $source_fh; + +# in-memory output (non-UTF8) + +Perl::Tidy::perltidy( + source => \$source, + destination => \$output, + perltidyrc => \$perltidyrc, + argv => '', +); + +ok($output, $expected_output, "in-memory EOLs (non-UTF8)"); + +# file output (non-UTF8) +Perl::Tidy::perltidy( + source => \$source, + destination => $output_filename, + perltidyrc => \$perltidyrc, + argv => '', +); + +{# slurp entire file + local $/ = undef; + open $output_fh, "<", $output_filename; + binmode $output_fh, ":raw"; + $output = <$output_fh>; +} + +ok($output, $expected_output, "output file EOLs (non-UTF8)"); + +$perltidyrc = <<'EOM'; +-gnu +--character-encoding="utf8" # treat files as UTF-8 (decode and encode) +--output-line-ending="unix" # use *nix LF EOLs +EOM + +# in-memory (UTF8) +$source = $source_template; +$source =~ s/\n/$CR$LF/gmsx; +$expected_output = $expected_output_template; +$expected_output =~ s/\n/$LF/gmsx; + +Perl::Tidy::perltidy( + source => \$source, + destination => \$output, + perltidyrc => \$perltidyrc, + argv => '', +); + +ok($output, $expected_output, "in-memory EOLs (UTF8)"); + +# file output (UTF8) + +Perl::Tidy::perltidy( + source => \$source, + destination => $output_filename, + perltidyrc => \$perltidyrc, + argv => '', +); + +{# slurp entire file + local $/ = undef; + open $output_fh, "<", $output_filename; + binmode $output_fh, ":raw"; + $output = <$output_fh>; +} + +ok($output, $expected_output, "output file EOLs (UTF8)");