Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Tighten up Windows CRLF conversion in our TAP test scripts.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Jul 2020 21:38:52 +0000 (17:38 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
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 6649c22b4f6dc4a9b31abb6163a9661ed0024674..124d747572bd2cdedbe7db95a9ecdbdcfebda4d5 100644 (file)
@@ -107,7 +107,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");
    }
 }
index 49f445e27b17d9b203e0395087a9715c3dec8ba3..fdcc15918ed3b1436834a36f5c338a2f51f259d6 100644 (file)
@@ -1133,7 +1133,6 @@ sub safe_psql
        print "\n#### End standard error\n";
    }
 
-   $stdout =~ s/\r//g if $TestLib::windows_os;
    return $stdout;
 }
 
@@ -1309,16 +1308,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
@@ -1381,8 +1384,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)
        {
@@ -1397,8 +1400,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:
@@ -1796,8 +1799,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 24e7e0d1c9928cc272613ca350dcf1dc1b082134..e5684c345237f484e97d53be236c63b988712c99 100644 (file)
@@ -240,7 +240,7 @@ sub slurp_file
      or die "could not read \"$filename\": $!";
    my $contents = <$in>;
    close $in;
-   $contents =~ s/\r//g if $Config{osname} eq 'msys';
+   $contents =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
    return $contents;
 }