diff --git a/tests/runtests.pl b/tests/runtests.pl index 293d6d38ed..8956398166 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -132,9 +132,6 @@ my $ftp_ipv6; # set if FTP server has IPv6 support my $resolver; # name of the resolver backend (for human presentation) -my $has_textaware; # set if running on a system that has a text mode concept - # on files. Windows for example - my %skipped; # skipped{reason}=counter, reasons for skip my @teststat; # teststat[testnum]=reason, reasons for skip my %disabled_keywords; # key words of tests to skip @@ -539,7 +536,6 @@ sub checksystemfeatures { # This is a Windows MinGW build or native build, we need to use # Windows-style path. $pwd = sys_native_current_path(); - $has_textaware = 1; $feature{"win32"} = 1; # set if built with MinGW (as opposed to MinGW-w64) $feature{"MinGW"} = 1 if ($curl =~ /-pc-mingw32/); @@ -1199,6 +1195,12 @@ sub singletest_count { return 0; } +# Make sure all line endings in the array are the same: CRLF +sub normalize_text { + my ($ref) = @_; + s/\r\n/\n/g for @$ref; + s/\n/\r\n/g for @$ref; +} ####################################################################### # Verify test succeeded @@ -1257,12 +1259,9 @@ sub singletest_check { # get the mode attribute my $filemode=$hash{'mode'}; - if($filemode && ($filemode eq "text") && $has_textaware) { - # text mode when running on Windows: fix line endings - s/\r\n/\n/g for @validstdout; - s/\n/\r\n/g for @validstdout; - s/\r\n/\n/g for @actual; - s/\n/\r\n/g for @actual; + if($filemode && ($filemode eq "text")) { + normalize_text(\@validstdout); + normalize_text(\@actual); } if($hash{'nonewline'}) { @@ -1315,12 +1314,11 @@ sub singletest_check { # text mode check in hyper-mode. Sometimes necessary if the stderr # data *looks* like HTTP and thus has gotten CRLF newlines # mistakenly - s/\r\n/\n/g for @validstderr; + normalize_text(\@validstderr); } - if($filemode && ($filemode eq "text") && $has_textaware) { - # text mode when running on Windows: fix line endings - s/\r\n/\n/g for @validstderr; - s/\n/\r\n/g for @validstderr; + if($filemode && ($filemode eq "text")) { + normalize_text(\@validstderr); + normalize_text(\@actual); } if($hash{'nonewline'}) { @@ -1412,10 +1410,8 @@ sub singletest_check { my %replycheckpartattr = getpartattr("reply", "datacheck".$partsuffix); # get the mode attribute my $filemode=$replycheckpartattr{'mode'}; - if($filemode && ($filemode eq "text") && $has_textaware) { - # text mode when running on Windows: fix line endings - s/\r\n/\n/g for @replycheckpart; - s/\n/\r\n/g for @replycheckpart; + if($filemode && ($filemode eq "text")) { + normalize_text(\@replycheckpart); } if($replycheckpartattr{'nonewline'}) { # Yes, we must cut off the final newline from the final line @@ -1442,10 +1438,8 @@ sub singletest_check { } # get the mode attribute my $filemode=$replyattr{'mode'}; - if($filemode && ($filemode eq "text") && $has_textaware) { - # text mode when running on Windows: fix line endings - s/\r\n/\n/g for @reply; - s/\n/\r\n/g for @reply; + if($filemode && ($filemode eq "text")) { + normalize_text(\@reply); } if($replyattr{'crlf'} || ($feature{"hyper"} && ($keywords{"HTTP"} @@ -1457,6 +1451,12 @@ sub singletest_check { if(!$replyattr{'nocheck'} && (@reply || $replyattr{'sendzero'})) { # verify the received data my @out = loadarray($CURLOUT); + + # get the mode attribute + my $filemode=$replyattr{'mode'}; + if($filemode && ($filemode eq "text")) { + normalize_text(\@out); + } $res = compare($runnerid, $testnum, $testname, "data", \@out, \@reply); if ($res) { return -1; @@ -1586,10 +1586,9 @@ sub singletest_check { my @stripfilepar = getpart("verify", "stripfile".$partsuffix); my $filemode=$hash{'mode'}; - if($filemode && ($filemode eq "text") && $has_textaware) { - # text mode when running on Windows: fix line endings - s/\r\n/\n/g for @outfile; - s/\n/\r\n/g for @outfile; + if($filemode && ($filemode eq "text")) { + normalize_text(\@outfile); + normalize_text(\@generated); } if($hash{'crlf'} || ($feature{"hyper"} && ($keywords{"HTTP"}