diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml index 7b682132668..d98187c970e 100644 --- a/doc/src/sgml/regress.sgml +++ b/doc/src/sgml/regress.sgml @@ -363,14 +363,6 @@ make check LANG=C ENCODING=EUC_JP make check EXTRA_TESTS=numeric_big - To run the collation tests: - -make check EXTRA_TESTS='collate.linux.utf8 collate.icu.utf8' LANG=en_US.utf8 - - The collate.linux.utf8 test works only on Linux/glibc - platforms. The collate.icu.utf8 test only works when - support for ICU was built. Both tests will only succeed when run in a - database that uses UTF-8 encoding. diff --git a/src/test/regress/expected/collate.icu.utf8.out b/src/test/regress/expected/collate.icu.utf8.out index 01bd9fb5dd7..51262e0bf44 100644 --- a/src/test/regress/expected/collate.icu.utf8.out +++ b/src/test/regress/expected/collate.icu.utf8.out @@ -1,6 +1,13 @@ /* * This test is for ICU collations. */ +/* skip test if not UTF8 server encoding or no ICU collations installed */ +SELECT getdatabaseencoding() <> 'UTF8' OR + (SELECT count(*) FROM pg_collation WHERE collprovider = 'i') = 0 + AS skip_test \gset +\if :skip_test +\quit +\endif SET client_encoding TO UTF8; CREATE SCHEMA collate_tests; SET search_path = collate_tests; diff --git a/src/test/regress/expected/collate.icu.utf8_1.out b/src/test/regress/expected/collate.icu.utf8_1.out new file mode 100644 index 00000000000..a6a33b39aba --- /dev/null +++ b/src/test/regress/expected/collate.icu.utf8_1.out @@ -0,0 +1,9 @@ +/* + * This test is for ICU collations. + */ +/* skip test if not UTF8 server encoding or no ICU collations installed */ +SELECT getdatabaseencoding() <> 'UTF8' OR + (SELECT count(*) FROM pg_collation WHERE collprovider = 'i') = 0 + AS skip_test \gset +\if :skip_test +\quit diff --git a/src/test/regress/expected/collate.linux.utf8.out b/src/test/regress/expected/collate.linux.utf8.out index 619688f851a..ad56ff9caa3 100644 --- a/src/test/regress/expected/collate.linux.utf8.out +++ b/src/test/regress/expected/collate.linux.utf8.out @@ -3,6 +3,13 @@ * locales is installed. It must be run in a database with UTF-8 encoding, * because other encodings don't support all the characters used. */ +SELECT getdatabaseencoding() <> 'UTF8' OR + (SELECT count(*) FROM pg_collation WHERE collname IN ('de_DE', 'en_US', 'sv_SE', 'tr_TR') AND collencoding = pg_char_to_encoding('UTF8')) <> 4 OR + version() !~ 'linux-gnu' + AS skip_test \gset +\if :skip_test +\quit +\endif SET client_encoding TO UTF8; CREATE SCHEMA collate_tests; SET search_path = collate_tests; diff --git a/src/test/regress/expected/collate.linux.utf8_1.out b/src/test/regress/expected/collate.linux.utf8_1.out new file mode 100644 index 00000000000..ede5fdb5dcc --- /dev/null +++ b/src/test/regress/expected/collate.linux.utf8_1.out @@ -0,0 +1,11 @@ +/* + * This test is for Linux/glibc systems and assumes that a full set of + * locales is installed. It must be run in a database with UTF-8 encoding, + * because other encodings don't support all the characters used. + */ +SELECT getdatabaseencoding() <> 'UTF8' OR + (SELECT count(*) FROM pg_collation WHERE collname IN ('de_DE', 'en_US', 'sv_SE', 'tr_TR') AND collencoding = pg_char_to_encoding('UTF8')) <> 4 OR + version() !~ 'linux-gnu' + AS skip_test \gset +\if :skip_test +\quit diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index 8fb55f045e6..fc0f14122bb 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -78,11 +78,12 @@ test: brin gin gist spgist privileges init_privs security_label collate matview # ---------- # Another group of parallel tests # ---------- -test: create_table_like alter_generic alter_operator misc async dbsize misc_functions sysviews tsrf tidscan +test: create_table_like alter_generic alter_operator misc async dbsize misc_functions sysviews tsrf tidscan collate.icu.utf8 # rules cannot run concurrently with any test that creates # a view or rule in the public schema -test: rules psql psql_crosstab amutils stats_ext +# collate.*.utf8 tests cannot be run in parallel with each other +test: rules psql psql_crosstab amutils stats_ext collate.linux.utf8 # run by itself so it can run parallel workers test: select_parallel diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index a39ca1012a3..68ac56acdb2 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -133,11 +133,13 @@ test: misc_functions test: sysviews test: tsrf test: tidscan +test: collate.icu.utf8 test: rules test: psql test: psql_crosstab test: amutils test: stats_ext +test: collate.linux.utf8 test: select_parallel test: write_parallel test: publication diff --git a/src/test/regress/sql/collate.icu.utf8.sql b/src/test/regress/sql/collate.icu.utf8.sql index 2be7759c92d..46999fb9266 100644 --- a/src/test/regress/sql/collate.icu.utf8.sql +++ b/src/test/regress/sql/collate.icu.utf8.sql @@ -2,6 +2,14 @@ * This test is for ICU collations. */ +/* skip test if not UTF8 server encoding or no ICU collations installed */ +SELECT getdatabaseencoding() <> 'UTF8' OR + (SELECT count(*) FROM pg_collation WHERE collprovider = 'i') = 0 + AS skip_test \gset +\if :skip_test +\quit +\endif + SET client_encoding TO UTF8; CREATE SCHEMA collate_tests; diff --git a/src/test/regress/sql/collate.linux.utf8.sql b/src/test/regress/sql/collate.linux.utf8.sql index c009fd2372d..eac2f900142 100644 --- a/src/test/regress/sql/collate.linux.utf8.sql +++ b/src/test/regress/sql/collate.linux.utf8.sql @@ -4,6 +4,14 @@ * because other encodings don't support all the characters used. */ +SELECT getdatabaseencoding() <> 'UTF8' OR + (SELECT count(*) FROM pg_collation WHERE collname IN ('de_DE', 'en_US', 'sv_SE', 'tr_TR') AND collencoding = pg_char_to_encoding('UTF8')) <> 4 OR + version() !~ 'linux-gnu' + AS skip_test \gset +\if :skip_test +\quit +\endif + SET client_encoding TO UTF8; CREATE SCHEMA collate_tests;