diff options
author | Nathan Bossart | 2025-03-20 16:08:42 +0000 |
---|---|---|
committer | Nathan Bossart | 2025-03-20 16:08:42 +0000 |
commit | af0d4901c1c39b3e3425522834708e0992592bb8 (patch) | |
tree | a5cdc537d8ca7eb3fd9eaddea8c2456638d19da6 /src/test/perl/PostgreSQL/Test | |
parent | 0164a0f9ee12e0eff9e4c661358a272ecd65c2d4 (diff) |
Add test for pg_upgrade file transfer modes.
This new test checks all of pg_upgrade's file transfer modes. For
each mode, we verify that pg_upgrade either succeeds (and some test
objects successfully reach the new version) or fails with an error
that indicates the mode is not supported on the current platform.
For cross-version tests, we also check that pg_upgrade transfers
non-default tablespaces. (Tablespaces can't be tested on same
version upgrades because of the version-specific subdirectory
conflict, but we might be able to enable such tests once we teach
pg_upgrade how to handle in-place tablespaces.)
Suggested-by: Robert Haas <[email protected]>
Reviewed-by: Andres Freund <[email protected]>
Discussion: https://postgr.es/m/Zyvop-LxLXBLrZil%40nathan
Diffstat (limited to 'src/test/perl/PostgreSQL/Test')
-rw-r--r-- | src/test/perl/PostgreSQL/Test/Cluster.pm | 19 | ||||
-rw-r--r-- | src/test/perl/PostgreSQL/Test/Utils.pm | 25 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm index 05bd94609d4..8759ed2cbba 100644 --- a/src/test/perl/PostgreSQL/Test/Cluster.pm +++ b/src/test/perl/PostgreSQL/Test/Cluster.pm @@ -2801,6 +2801,25 @@ sub command_fails_like =pod +=item $node->command_ok_or_fails_like(...) + +PostgreSQL::Test::Utils::command_ok_or_fails_like with our connection parameters. See command_ok(...) + +=cut + +sub command_ok_or_fails_like +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + + my $self = shift; + + local %ENV = $self->_get_env(); + + return PostgreSQL::Test::Utils::command_ok_or_fails_like(@_); +} + +=pod + =item $node->command_checks_all(...) PostgreSQL::Test::Utils::command_checks_all with our connection parameters. See diff --git a/src/test/perl/PostgreSQL/Test/Utils.pm b/src/test/perl/PostgreSQL/Test/Utils.pm index d1ad131eadf..7d7ca83495f 100644 --- a/src/test/perl/PostgreSQL/Test/Utils.pm +++ b/src/test/perl/PostgreSQL/Test/Utils.pm @@ -89,6 +89,7 @@ our @EXPORT = qw( command_like command_like_safe command_fails_like + command_ok_or_fails_like command_checks_all $windows_os @@ -1067,6 +1068,30 @@ sub command_fails_like =pod +=item command_ok_or_fails_like(cmd, expected_stdout, expected_stderr, test_name) + +Check that the command either succeeds or fails with an error that matches the +given regular expressions. + +=cut + +sub command_ok_or_fails_like +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + my ($cmd, $expected_stdout, $expected_stderr, $test_name) = @_; + my ($stdout, $stderr); + print("# Running: " . join(" ", @{$cmd}) . "\n"); + my $result = IPC::Run::run $cmd, '>' => \$stdout, '2>' => \$stderr; + if (!$result) + { + like($stdout, $expected_stdout, "$test_name: stdout matches"); + like($stderr, $expected_stderr, "$test_name: stderr matches"); + } + return $result; +} + +=pod + =item command_checks_all(cmd, ret, out, err, test_name) Run a command and check its status and outputs. |