From: Daniel Stenberg Date: Thu, 29 Aug 2024 14:00:21 +0000 (+0200) Subject: runtests: remove "has_textaware" X-Git-Tag: curl-8_10_0~82 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3cf45fedc49c97f972fa9499ba8d28a91e12d66a;p=thirdparty%2Fcurl.git runtests: remove "has_textaware" All sections defined with the mode="text" attribute now get line endings normalized so that comparisons become line ending agnostic. Removes the previous problem of figuring out how exactly different Windows environments should be treated in this regard. Closes #14717 --- 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"}