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 8469c9c2d3cad99b64fa0eb7aa3887a64fa3f3d0..506e103f7940195277384f004d414ee4f90fec93 100644 (file)
@@ -113,7 +113,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 bbb31d3a0d1776d1d6d2e66c9c9de7721e119402..c3939edc5304188a0333656630687aa0defdde8f 100644 (file)
@@ -1247,7 +1247,6 @@ sub safe_psql
        print "\n#### End standard error\n";
    }
 
-   $stdout =~ s/\r//g if $TestLib::windows_os;
    return $stdout;
 }
 
@@ -1423,16 +1422,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
@@ -1495,8 +1498,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)
        {
@@ -1511,8 +1514,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:
@@ -1946,8 +1949,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 9981265766966c3fa3059508beba47a2f9a8f180..34841ff9654e0a0a6aa2be3fa9b2cbb31d8d0801 100644 (file)
@@ -254,7 +254,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;
 }