mirror of
https://github.com/postgres/postgres.git
synced 2025-05-12 16:21:30 +03:00
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
51 lines
1.6 KiB
Perl
51 lines
1.6 KiB
Perl
use strict;
|
|
use warnings;
|
|
|
|
use PostgresNode;
|
|
use TestLib;
|
|
use Test::More tests => 22;
|
|
|
|
program_help_ok('createdb');
|
|
program_version_ok('createdb');
|
|
program_options_handling_ok('createdb');
|
|
|
|
my $node = get_new_node('main');
|
|
$node->init;
|
|
$node->start;
|
|
|
|
$node->issues_sql_like(
|
|
[ 'createdb', 'foobar1' ],
|
|
qr/statement: CREATE DATABASE foobar1/,
|
|
'SQL CREATE DATABASE run');
|
|
$node->issues_sql_like(
|
|
[ 'createdb', '-l', 'C', '-E', 'LATIN1', '-T', 'template0', 'foobar2' ],
|
|
qr/statement: CREATE DATABASE foobar2 ENCODING 'LATIN1'/,
|
|
'create database with encoding');
|
|
|
|
$node->command_fails([ 'createdb', 'foobar1' ],
|
|
'fails if database already exists');
|
|
|
|
# Check quote handling with incorrect option values.
|
|
$node->command_checks_all(
|
|
[ 'createdb', '--encoding', "foo'; SELECT '1", 'foobar2' ],
|
|
1,
|
|
[qr/^$/],
|
|
[qr/^createdb: "foo'; SELECT '1" is not a valid encoding name/s],
|
|
'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|^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');
|