mirror of
https://github.com/curl/curl.git
synced 2026-05-15 03:26:20 +03:00
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
This commit is contained in:
parent
eeb7c12807
commit
3cf45fedc4
1 changed files with 26 additions and 27 deletions
|
|
@ -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"}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue