From f52345995d3691de7b0a888903b6cfed1497c672 Mon Sep 17 00:00:00 2001 From: Masahiko Sawada Date: Tue, 4 Mar 2025 11:16:12 -0800 Subject: [PATCH] pg_upgrade: Check for the expected error message in TAP tests. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Discussion: https://postgr.es/m/87tt8h1vb7.fsf@wibble.ilmari.org --- src/bin/pg_upgrade/t/002_pg_upgrade.pl | 5 ++++- src/bin/pg_upgrade/t/004_subscription.pl | 7 ++++++- 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' ); -- 2.30.2