mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
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
This commit is contained in:
parent
4476bcb877
commit
0d91c52a8f
@ -434,6 +434,7 @@ sub run_command
|
||||
my ($cmd) = @_;
|
||||
my ($stdout, $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($stderr);
|
||||
return ($stdout, $stderr);
|
||||
@ -878,6 +879,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;
|
||||
}
|
||||
@ -930,6 +932,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;
|
||||
}
|
||||
@ -974,6 +977,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)");
|
||||
|
Loading…
Reference in New Issue
Block a user