Commit 90251ff1 authored by Michael Paquier's avatar Michael Paquier

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
parent 2ad5f963
...@@ -414,6 +414,7 @@ sub run_command ...@@ -414,6 +414,7 @@ sub run_command
my ($cmd) = @_; my ($cmd) = @_;
my ($stdout, $stderr); my ($stdout, $stderr);
my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
foreach ($stderr, $stdout) { s/\r\n/\n/g if $Config{osname} eq 'msys'; }
chomp($stdout); chomp($stdout);
chomp($stderr); chomp($stderr);
return ($stdout, $stderr); return ($stdout, $stderr);
...@@ -858,6 +859,7 @@ sub command_like ...@@ -858,6 +859,7 @@ sub command_like
my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
ok($result, "$test_name: exit code 0"); ok($result, "$test_name: exit code 0");
is($stderr, '', "$test_name: no stderr"); is($stderr, '', "$test_name: no stderr");
$stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
like($stdout, $expected_stdout, "$test_name: matches"); like($stdout, $expected_stdout, "$test_name: matches");
return; return;
} }
...@@ -910,6 +912,7 @@ sub command_fails_like ...@@ -910,6 +912,7 @@ sub command_fails_like
print("# Running: " . join(" ", @{$cmd}) . "\n"); print("# Running: " . join(" ", @{$cmd}) . "\n");
my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
ok(!$result, "$test_name: exit code not 0"); 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"); like($stderr, $expected_stderr, "$test_name: matches");
return; return;
} }
...@@ -954,6 +957,8 @@ sub command_checks_all ...@@ -954,6 +957,8 @@ sub command_checks_all
if $ret & 127; if $ret & 127;
$ret = $ret >> 8; $ret = $ret >> 8;
foreach ($stderr, $stdout) { s/\r\n/\n/g if $Config{osname} eq 'msys'; }
# check status # check status
ok($ret == $expected_ret, ok($ret == $expected_ret,
"$test_name status (got $ret vs expected $expected_ret)"); "$test_name status (got $ret vs expected $expected_ret)");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment