From 9ffe2278372d7549547176c23564a5b3404d072e Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 7 Jan 2021 20:36:09 -0500 Subject: [PATCH] Adjust createdb TAP tests to work on recent OpenBSD. We found last February that the error-case tests added by commit 008cf0409 failed on OpenBSD, because that platform doesn't really check locale names. At the time it seemed that that was only an issue for LC_CTYPE, but testing on a more recent version of OpenBSD shows that it's now equally lax about LC_COLLATE. Rather than dropping the LC_COLLATE test too, put back LC_CTYPE (reverting c4b0edb07), and adjust these tests to accept the different error message that we get if setlocale() doesn't reject a bogus locale name. The point of these tests is not really what the backend does with the locale name, but to show that createdb quotes funny locale names safely; so we're not losing test reliability this way. Back-patch as appropriate. Discussion: https://postgr.es/m/231373.1610058324@sss.pgh.pa.us --- src/bin/scripts/t/020_createdb.pl | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/bin/scripts/t/020_createdb.pl b/src/bin/scripts/t/020_createdb.pl index 89de674265..983dbb1d37 100644 --- a/src/bin/scripts/t/020_createdb.pl +++ b/src/bin/scripts/t/020_createdb.pl @@ -3,7 +3,7 @@ use warnings; use PostgresNode; use TestLib; -use Test::More tests => 19; +use Test::More tests => 22; program_help_ok('createdb'); program_version_ok('createdb'); @@ -31,12 +31,20 @@ $node->command_checks_all( 1, [qr/^$/], [qr/^createdb: error: "foo'; SELECT '1" is not a valid encoding name/s], - 'createdb with incorrect --lc-collate'); + 'createdb with incorrect --encoding'); $node->command_checks_all( [ 'createdb', '--lc-collate', "foo'; SELECT '1", 'foobar2' ], 1, [qr/^$/], [ - qr/^createdb: error: database creation failed: ERROR: invalid locale name/s + qr/^createdb: error: database creation failed: ERROR: invalid locale name|^createdb: error: database creation failed: ERROR: new collation \(foo'; SELECT '1\) is incompatible with the collation of the template database/s ], 'createdb with incorrect --lc-collate'); +$node->command_checks_all( + [ 'createdb', '--lc-ctype', "foo'; SELECT '1", 'foobar2' ], + 1, + [qr/^$/], + [ + qr/^createdb: error: database creation failed: ERROR: invalid locale name|^createdb: error: database creation failed: ERROR: new LC_CTYPE \(foo'; SELECT '1\) is incompatible with the LC_CTYPE of the template database/s + ], + 'createdb with incorrect --lc-ctype');