Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Adjust createdb TAP tests to work on recent OpenBSD.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Jan 2021 01:36:09 +0000 (20:36 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Jan 2021 01:36:09 +0000 (20:36 -0500)
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

index 05069bcdbc3218dec9e6dd1404186ca6c803f8ba..6fa1c1a0f84155d9f86ca528998f41be36111307 100644 (file)
@@ -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: "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: database creation failed: ERROR:  invalid locale name/s
+       qr/^createdb: database creation failed: ERROR:  invalid locale name|^createdb: 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: database creation failed: ERROR:  invalid locale name|^createdb: 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');