postgres.git / summary / log / commit / refs

commit    1b6d1ead3bfbf1771d2cf8fd975f980a16211348
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Tue Sep 21 23:43:30 2021 +0000

    Fix places in TestLib.pm in need of adaptation to the output of Msys perl
    
    Contrary to the output of native perl, Msys perl generates outputs with
    CRLFs characters.  There are already places in the TAP code where CRLFs
    (\r\n) are automatically converted to LF (\n) on Msys, but we missed a
    couple of places when running commands and using their output for
    comparison, that would lead to failures.
    
    This problem has been found thanks to the test added in 5adb067 using
    TestLib::command_checks_all(), but after a closer look more code paths
    were missing a filter.
    
    This is backpatched all the way down to prevent any surprises if a new
    test is introduced in stable branches.
    
    Reviewed-by: Andrew Dunstan, Álvaro Herrera
    Discussion: https://postgr.es/m/1252480.1631829409@sss.pgh.pa.us
    Backpatch-through: 9.6


src/test/perl/TestLib.pm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index 3480b6edc5a..a5c7ae71495 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -528,6 +528,7 @@ sub command_like my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; ok($result, "$test_name: exit code 0"); is($stderr, '', "$test_name: no stderr"); + $stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; like($stdout, $expected_stdout, "$test_name: matches"); return; } @@ -559,6 +560,7 @@ sub command_fails_like print("# Running: " . join(" ", @{$cmd}) . "\n"); my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; ok(!$result, "$test_name: exit code not 0"); + $stderr =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; like($stderr, $expected_stderr, "$test_name: matches"); return; } @@ -585,6 +587,8 @@ sub command_checks_all if $ret & 127; $ret = $ret >> 8; + foreach ($stderr, $stdout) { s/\r\n/\n/g if $Config{osname} eq 'msys'; } + # check status ok($ret == $expected_ret, "$test_name status (got $ret vs expected $expected_ret)"); [parent: 13921c511266]