mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-08 12:36:56 +02:00
44e73a498c
The tests of unaccent rely on UTF8 characters, and unlike any other test suite in the tree (fuzzystrmatch, citext, hstore, etc.), they would fail if run on a database that does not support UTF8 encoding. This commit fixes the tests of unaccent so as these are skipped when run on a database without UTF8 support, using the same method as the other test suits based on \if, getdatabaseencoding() and an alternate output file. This has been broken for a long time, but nobody has complained about that either, so no backpatch is done. This can be reproduced with something like REGRESS_OPTS="--no-locale --encoding=sql_ascii", for instance. To defend against that, this module's Makefile and meson.build enforced a UTF8 encoding without locales, but it did not offer protection for options given by REGRESS_OPTS. This switch makes this regression test suite more consistent with all the others, as well. Reviewed-by: Peter Eisentraut Discussion: https://postgr.es/m/ZIq1HUnIV2ksW85x@paquier.xyz
146 lines
2.1 KiB
Plaintext
146 lines
2.1 KiB
Plaintext
/*
|
||
* This test must be run in a database with UTF-8 encoding,
|
||
* because other encodings don't support all the characters used.
|
||
*/
|
||
SELECT getdatabaseencoding() <> 'UTF8'
|
||
AS skip_test \gset
|
||
\if :skip_test
|
||
\quit
|
||
\endif
|
||
CREATE EXTENSION unaccent;
|
||
SET client_encoding TO 'UTF8';
|
||
SELECT unaccent('foobar');
|
||
unaccent
|
||
----------
|
||
foobar
|
||
(1 row)
|
||
|
||
SELECT unaccent('ёлка');
|
||
unaccent
|
||
----------
|
||
елка
|
||
(1 row)
|
||
|
||
SELECT unaccent('ЁЖИК');
|
||
unaccent
|
||
----------
|
||
ЕЖИК
|
||
(1 row)
|
||
|
||
SELECT unaccent('˃˖˗˜');
|
||
unaccent
|
||
----------
|
||
>+-~
|
||
(1 row)
|
||
|
||
SELECT unaccent('À'); -- Remove combining diacritical 0x0300
|
||
unaccent
|
||
----------
|
||
A
|
||
(1 row)
|
||
|
||
SELECT unaccent('℃℉'); -- degree signs
|
||
unaccent
|
||
----------
|
||
°C°F
|
||
(1 row)
|
||
|
||
SELECT unaccent('℗'); -- sound recording copyright
|
||
unaccent
|
||
----------
|
||
(P)
|
||
(1 row)
|
||
|
||
SELECT unaccent('unaccent', 'foobar');
|
||
unaccent
|
||
----------
|
||
foobar
|
||
(1 row)
|
||
|
||
SELECT unaccent('unaccent', 'ёлка');
|
||
unaccent
|
||
----------
|
||
елка
|
||
(1 row)
|
||
|
||
SELECT unaccent('unaccent', 'ЁЖИК');
|
||
unaccent
|
||
----------
|
||
ЕЖИК
|
||
(1 row)
|
||
|
||
SELECT unaccent('unaccent', '˃˖˗˜');
|
||
unaccent
|
||
----------
|
||
>+-~
|
||
(1 row)
|
||
|
||
SELECT unaccent('unaccent', 'À');
|
||
unaccent
|
||
----------
|
||
A
|
||
(1 row)
|
||
|
||
SELECT unaccent('unaccent', '℃℉');
|
||
unaccent
|
||
----------
|
||
°C°F
|
||
(1 row)
|
||
|
||
SELECT unaccent('unaccent', '℗');
|
||
unaccent
|
||
----------
|
||
(P)
|
||
(1 row)
|
||
|
||
SELECT ts_lexize('unaccent', 'foobar');
|
||
ts_lexize
|
||
-----------
|
||
|
||
(1 row)
|
||
|
||
SELECT ts_lexize('unaccent', 'ёлка');
|
||
ts_lexize
|
||
-----------
|
||
{елка}
|
||
(1 row)
|
||
|
||
SELECT ts_lexize('unaccent', 'ЁЖИК');
|
||
ts_lexize
|
||
-----------
|
||
{ЕЖИК}
|
||
(1 row)
|
||
|
||
SELECT ts_lexize('unaccent', '˃˖˗˜');
|
||
ts_lexize
|
||
-----------
|
||
{>+-~}
|
||
(1 row)
|
||
|
||
SELECT ts_lexize('unaccent', 'À');
|
||
ts_lexize
|
||
-----------
|
||
{A}
|
||
(1 row)
|
||
|
||
SELECT ts_lexize('unaccent', '℃℉');
|
||
ts_lexize
|
||
-----------
|
||
{°C°F}
|
||
(1 row)
|
||
|
||
SELECT ts_lexize('unaccent', '℗');
|
||
ts_lexize
|
||
-----------
|
||
{(P)}
|
||
(1 row)
|
||
|
||
-- Controversial case. Black-Letter Capital H (U+210C) is translated by
|
||
-- Latin-ASCII.xml as 'x', but it should be 'H'.
|
||
SELECT unaccent('ℌ');
|
||
unaccent
|
||
----------
|
||
x
|
||
(1 row)
|
||
|