diff options
author | Masahiko Sawada <msawada@postgresql.org> | 2025-03-04 11:16:12 -0800 |
---|---|---|
committer | Masahiko Sawada <msawada@postgresql.org> | 2025-03-04 11:16:12 -0800 |
commit | f52345995d3691de7b0a888903b6cfed1497c672 (patch) | |
tree | 1e8e868398106efa7af93c06b60ba28b9cc6f90b | |
parent | 7bbc46213de9301795da90923a015070239c1fcc (diff) | |
download | postgresql-f52345995d3691de7b0a888903b6cfed1497c672.tar.gz postgresql-f52345995d3691de7b0a888903b6cfed1497c672.zip |
pg_upgrade: Check for the expected error message in TAP tests.
Since pg_upgrade prints its error messages on stdout, we can't use
command_fails_like() to check if it fails for the right reason. This
commit uses command_checks_all() in pg_upgrade TAP tests to check the
exit status and stdout, enabling proper verification of error
reasons.
Author: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Discussion: https://postgr.es/m/87tt8h1vb7.fsf@wibble.ilmari.org
-rw-r--r-- | src/bin/pg_upgrade/t/002_pg_upgrade.pl | 5 | ||||
-rw-r--r-- | src/bin/pg_upgrade/t/004_subscription.pl | 7 | ||||
-rw-r--r-- | src/bin/pg_upgrade/t/005_char_signedness.pl | 5 |
3 files changed, 14 insertions, 3 deletions
diff --git a/src/bin/pg_upgrade/t/002_pg_upgrade.pl b/src/bin/pg_upgrade/t/002_pg_upgrade.pl index 45ea94c84bb..c00cf68d660 100644 --- a/src/bin/pg_upgrade/t/002_pg_upgrade.pl +++ b/src/bin/pg_upgrade/t/002_pg_upgrade.pl @@ -396,7 +396,7 @@ $oldnode->stop; # Cause a failure at the start of pg_upgrade, this should create the logging # directory pg_upgrade_output.d but leave it around. Keep --check for an # early exit. -command_fails( +command_checks_all( [ 'pg_upgrade', '--no-sync', '-d', $oldnode->data_dir, @@ -408,6 +408,9 @@ command_fails( '-P', $newnode->port, $mode, '--check', ], + 1, + [qr{check for ".*?does/not/exist" failed}], + [], 'run of pg_upgrade --check for new instance with incorrect binary path'); ok(-d $newnode->data_dir . "/pg_upgrade_output.d", "pg_upgrade_output.d/ not removed after pg_upgrade failure"); diff --git a/src/bin/pg_upgrade/t/004_subscription.pl b/src/bin/pg_upgrade/t/004_subscription.pl index 13773316e1d..e3ccff9f270 100644 --- a/src/bin/pg_upgrade/t/004_subscription.pl +++ b/src/bin/pg_upgrade/t/004_subscription.pl @@ -130,7 +130,7 @@ $old_sub->safe_psql('postgres', $old_sub->stop; -command_fails( +command_checks_all( [ 'pg_upgrade', '--no-sync', @@ -144,6 +144,11 @@ command_fails( $mode, '--check', ], + 1, + [ + qr/\QYour installation contains subscriptions without origin or having relations not in i (initialize) or r (ready) state\E/ + ], + [], 'run of pg_upgrade --check for old instance with relation in \'d\' datasync(invalid) state and missing replication origin' ); diff --git a/src/bin/pg_upgrade/t/005_char_signedness.pl b/src/bin/pg_upgrade/t/005_char_signedness.pl index b3092f03bb7..d186822ac77 100644 --- a/src/bin/pg_upgrade/t/005_char_signedness.pl +++ b/src/bin/pg_upgrade/t/005_char_signedness.pl @@ -41,7 +41,7 @@ command_like( 'updated default char signedness is unsigned in control file'); # Cannot use --set-char-signedness option for upgrading from v18+ -command_fails( +command_checks_all( [ 'pg_upgrade', '--no-sync', '-d', $old->data_dir, @@ -54,6 +54,9 @@ command_fails( '--set-char-signedness', 'signed', $mode ], + 1, + [qr/--set-char-signedness option cannot be used/], + [], '--set-char-signedness option cannot be used for upgrading from v18 or later' ); |