diff --git a/gettext-tools/gnulib-tests/unicase/test-mapping-part1.h b/gettext-tools/gnulib-tests/unicase/test-mapping-part1.h index d64bb32..f497ad4 100644 --- a/gettext-tools/gnulib-tests/unicase/test-mapping-part1.h +++ b/gettext-tools/gnulib-tests/unicase/test-mapping-part1.h @@ -22,6 +22,25 @@ #include "macros.h" +#if HAVE_LIBUNISTRING +/* The generated mappings in this source tree target Unicode 16.0.0. + Skip direct comparisons when an external libunistring provides a newer + Unicode database than the expected tables embedded in these tests. */ +extern int _libunistring_unicode_version; + +static int +should_skip_for_external_libunistring_version (void) +{ + return _libunistring_unicode_version > 0x1000; +} +#else +static int +should_skip_for_external_libunistring_version (void) +{ + return 0; +} +#endif + /* Pair of Unicode characters. */ typedef struct { ucs4_t ch; ucs4_t value; } pair_t; diff --git a/gettext-tools/gnulib-tests/unicase/test-mapping-part2.h b/gettext-tools/gnulib-tests/unicase/test-mapping-part2.h index aa14384..80fb2b6 100644 --- a/gettext-tools/gnulib-tests/unicase/test-mapping-part2.h +++ b/gettext-tools/gnulib-tests/unicase/test-mapping-part2.h @@ -19,6 +19,9 @@ int main () { + if (should_skip_for_external_libunistring_version ()) + return 77; + unsigned int c; size_t i; diff --git a/gettext-tools/gnulib-tests/unictype/test-predicate-part1.h b/gettext-tools/gnulib-tests/unictype/test-predicate-part1.h index caf2dc2..20a35df 100644 --- a/gettext-tools/gnulib-tests/unictype/test-predicate-part1.h +++ b/gettext-tools/gnulib-tests/unictype/test-predicate-part1.h @@ -22,6 +22,26 @@ #include "macros.h" +#if HAVE_LIBUNISTRING +/* The generated tables in this source tree target Unicode 16.0.0. + When these tests are linked against an external libunistring with a newer + Unicode database, direct table equality checks become stale and should be + skipped rather than reported as regressions in gettext's bundled data. */ +extern int _libunistring_unicode_version; + +static int +should_skip_for_external_libunistring_version (void) +{ + return _libunistring_unicode_version > 0x1000; +} +#else +static int +should_skip_for_external_libunistring_version (void) +{ + return 0; +} +#endif + /* Interval of Unicode characters. */ typedef struct { ucs4_t start; ucs4_t end; } interval_t; diff --git a/gettext-tools/gnulib-tests/unictype/test-predicate-part2.h b/gettext-tools/gnulib-tests/unictype/test-predicate-part2.h index b4eef82..ac5071d 100644 --- a/gettext-tools/gnulib-tests/unictype/test-predicate-part2.h +++ b/gettext-tools/gnulib-tests/unictype/test-predicate-part2.h @@ -19,6 +19,9 @@ int main () { + if (should_skip_for_external_libunistring_version ()) + return 77; + unsigned int c; size_t i;