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 135d8f0449f596cf86e8a43809356b78b0b2d4ea..77306fe453bfd1d880bc49a229bc5ced030256a1 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 ec5985623bc8e0b64e37960999814b8cf374cd19..8a08a64f3d0271ea4f8e87cffaac7071d4fefc12 100644 (file)
@@ -1122,7 +1122,6 @@ sub safe_psql
        print "\n#### End standard error\n";
    }
 
-   $stdout =~ s/\r//g if $TestLib::windows_os;
    return $stdout;
 }
 
@@ -1297,16 +1296,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
@@ -1364,8 +1367,8 @@ sub poll_query_until
          [ 'psql', '-XAt', '-c', $query, '-d', $self->connstr($dbname) ];
        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 "t")
        {
            return 1;
@@ -1378,8 +1381,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:
index 76af7dd7345776b6b5f3024f8ba6fa4668bde8db..1cbe73f1705cfcb8557360797718ca686c535be9 100644 (file)
@@ -216,7 +216,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;
 }