Fix createdb tests for C locale
authorPeter Eisentraut <[email protected]>
Fri, 16 Sep 2022 09:10:41 +0000 (11:10 +0200)
committerPeter Eisentraut <[email protected]>
Fri, 16 Sep 2022 09:10:41 +0000 (11:10 +0200)
If the createdb tests run under the C locale, the database cluster
will be initialized with encoding SQL_ASCII.  With the checks added in
c7db01e325a530ec38ec7ba57cd3ed32e123e33c, this will cause several
ICU-related tests to fail because SQL_ASCII is not supported by ICU.
To work around that, use initdb option -E UTF8 for those tests to get
past that check.

src/bin/scripts/t/020_createdb.pl

index e95f200d0b93cbd2fc4beeb20f3417b10f328df4..b87d8fc63b5246b02bcd4499aae815269b60df7c 100644 (file)
@@ -31,13 +31,16 @@ if ($ENV{with_icu} eq 'yes')
        # locale set.  It would succeed if template0 used the icu
        # provider.  XXX Maybe split into multiple tests?
        $node->command_fails(
-               [ 'createdb', '-T', 'template0', '--locale-provider=icu', 'foobar4' ],
+               [
+                       'createdb', '-T', 'template0', '-E', 'UTF8',
+                       '--locale-provider=icu', 'foobar4'
+               ],
                'create database with ICU fails without ICU locale specified');
 
        $node->issues_sql_like(
                [
                        'createdb',        '-T',
-                       'template0',       '--locale-provider=icu',
+                       'template0',       '-E', 'UTF8', '--locale-provider=icu',
                        '--icu-locale=en', 'foobar5'
                ],
                qr/statement: CREATE DATABASE foobar5 .* LOCALE_PROVIDER icu ICU_LOCALE 'en'/,
@@ -45,7 +48,8 @@ if ($ENV{with_icu} eq 'yes')
 
        $node->command_fails(
                [
-                       'createdb', '-T', 'template0', '--locale-provider=icu',
+                       'createdb', '-T', 'template0', '-E', 'UTF8',
+                       '--locale-provider=icu',
                        '--icu-locale=@colNumeric=lower', 'foobarX'
                ],
                'fails for invalid ICU locale');