Tighten up Windows CRLF conversion in our TAP test scripts.
authorTom Lane
Thu, 9 Jul 2020 21:38:52 +0000 (17:38 -0400)
committerTom Lane
Thu, 9 Jul 2020 21:38:52 +0000 (17:38 -0400)
Back-patch commits 91bdf499b and ffb4cee43, so that all branches
agree on when and how to do Windows CRLF conversion.

This should close the referenced thread.  Thanks to Andrew Dunstan
for discussion/review.

Discussion: https://postgr.es/m/412ae8da-76bb-640f-039a-f3513499e53d@gmx.net

src/bin/pg_rewind/t/RewindTest.pm
src/test/perl/PostgresNode.pm
src/test/perl/TestLib.pm

index 7dabf395e106cbefec19bedab3255a10e0bbab6d..77fa632ce9cdf52cd60a6fcfd5aee30332ed8570 100644 (file)
@@ -112,7 +112,7 @@ sub check_query
    }
    else
    {
-       $stdout =~ s/\r//g if $Config{osname} eq 'msys';
+       $stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
        is($stdout, $expected_stdout, "$test_name: query result matches");
    }
    return;
index 1407359aef66fa441b69acd80a88f248229c5a80..1dedba4785ad7eaf4ab588eeec519381b0933ac0 100644 (file)
@@ -1324,7 +1324,6 @@ sub safe_psql
        print "\n#### End standard error\n";
    }
 
-   $stdout =~ s/\r//g if $TestLib::windows_os;
    return $stdout;
 }
 
@@ -1513,16 +1512,20 @@ sub psql
        }
    };
 
+   # Note: on Windows, IPC::Run seems to convert \r\n to \n in program output
+   # if we're using native Perl, but not if we're using MSys Perl.  So do it
+   # by hand in the latter case, here and elsewhere.
+
    if (defined $$stdout)
    {
+       $$stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
        chomp $$stdout;
-       $$stdout =~ s/\r//g if $TestLib::windows_os;
    }
 
    if (defined $$stderr)
    {
+       $$stderr =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
        chomp $$stderr;
-       $$stderr =~ s/\r//g if $TestLib::windows_os;
    }
 
    # See http://perldoc.perl.org/perlvar.html#%24CHILD_ERROR
@@ -1652,8 +1655,8 @@ sub poll_query_until
    {
        my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
 
+       $stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
        chomp($stdout);
-       $stdout =~ s/\r//g if $TestLib::windows_os;
 
        if ($stdout eq $expected)
        {
@@ -1668,8 +1671,8 @@ sub poll_query_until
 
    # The query result didn't change in 180 seconds. Give up. Print the
    # output from the last attempt, hopefully that's useful for debugging.
+   $stderr =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
    chomp($stderr);
-   $stderr =~ s/\r//g if $TestLib::windows_os;
    diag qq(poll_query_until timed out executing this query:
 $query
 expecting this output:
@@ -2113,8 +2116,8 @@ sub pg_recvlogical_upto
        }
    };
 
-   $stdout =~ s/\r//g if $TestLib::windows_os;
-   $stderr =~ s/\r//g if $TestLib::windows_os;
+   $stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
+   $stderr =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
 
    if (wantarray)
    {
index d579d5c177b0b5f17a5b3643f1a467460fa31315..a7490d2ce7973b145d897ee0793858ffe2c17ec8 100644 (file)
@@ -430,7 +430,7 @@ sub slurp_file
        CloseHandle($fHandle)
          or die "could not close \"$filename\": $^E\n";
    }
-   $contents =~ s/\r//g if $Config{osname} eq 'msys';
+   $contents =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
    return $contents;
 }