diff options
author | Almaz Mingaleev <mingaleev@google.com> | 2022-04-01 13:22:28 +0000 |
---|---|---|
committer | Almaz Mingaleev <mingaleev@google.com> | 2022-04-01 13:22:28 +0000 |
commit | 1957d82a0c29a729efcb431b0ffa32bf2a8018e4 (patch) | |
tree | fb1b9b703296b51c36a8c204f9c053ec353040b6 | |
parent | c237a53b41a1ae8d38cedf4edd4d3f89dfb680e1 (diff) | |
download | icu-1957d82a0c29a729efcb431b0ffa32bf2a8018e4.tar.gz |
DO NOT MERGE Track tzdb 2022a update [Q CTS].
This change is associated with tzdb 2022a changes in system/timezone.
In this update we include controversial pre-1970 time zone merges [1].
This updates time zone canonicalization rules and adds more
cross-country ones, so there might be app compat issues.
[1] https://github.com/eggert/tz/commit/1edbb16e933a6ba6dceefd2bd7057b5ce00dd13c
Only test files are kept, binary and text files are skipped.
Bug: 227724893
Test: see tests in system/timezone CL
Change-Id: Idc6a2daca06dbf0aba6069b39922470a573de62a
Merged-In: Idc6a2daca06dbf0aba6069b39922470a573de62a
3 files changed, 118 insertions, 80 deletions
diff --git a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java index b0ed3808c..ae01a4dda 100644 --- a/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java +++ b/android_icu4j/src/main/tests/android/icu/dev/test/timezone/TimeZoneTest.java @@ -1505,9 +1505,18 @@ public class TimeZoneTest extends TestFmwk @Test public void TestCanonicalID() { - // Some canonical IDs in CLDR are defined as "Link" - // in Olson tzdata. + // Olson (IANA) tzdata used to have very few "Link"s long time ago. + // This test case was written when most of CLDR canonical time zones are + // defined as independent "Zone" in the TZ database. + // Since then, the TZ maintainer found some historic rules in mid 20th century + // were not really reliable, and many zones are now sharing rules. + // As of TZ database release 2022a, there are quite a lot of zones defined + // by "Link" to another zone, so the exception table below becomes really + // big. It might be still useful to make sure CLDR zone aliases are consistent + // with zone rules. final String[][] excluded1 = { + // {"<link-from>", "<link-to> (A zone ID with "Zone" rule)"}, + {"Africa/Accra", "Africa/Abidjan"}, {"Africa/Addis_Ababa", "Africa/Nairobi"}, {"Africa/Asmera", "Africa/Nairobi"}, {"Africa/Bamako", "Africa/Abidjan"}, @@ -1542,39 +1551,43 @@ public class TimeZoneTest extends TestFmwk {"Africa/Ouagadougou", "Africa/Abidjan"}, {"Africa/Porto-Novo", "Africa/Lagos"}, {"Africa/Sao_Tome", "Africa/Abidjan"}, - {"America/Antigua", "America/Port_of_Spain"}, - {"America/Anguilla", "America/Port_of_Spain"}, + {"America/Antigua", "America/Puerto_Rico"}, + {"America/Anguilla", "America/Puerto_Rico"}, + {"America/Aruba", "America/Puerto_Rico"}, + {"America/Atikokan", "America/Panama"}, + {"America/Blanc-Sablon", "America/Puerto_Rico"}, {"America/Cayman", "America/Panama"}, - // TODO(b/204533494): enable this check back. - // Android-Changed: due to issues with time zones canonicity, decision was made - // to keep America/Coral_Harbour as alias to America/Atikokan. - // See more details in system/timezone/RELEASE_NOTES.md - // {"America/Coral_Harbour", "America/Panama"}, - {"America/Curacao", "America/Aruba"}, - {"America/Dominica", "America/Port_of_Spain"}, - {"America/Grenada", "America/Port_of_Spain"}, - {"America/Guadeloupe", "America/Port_of_Spain"}, - {"America/Kralendijk", "America/Aruba"}, - {"America/Lower_Princes", "America/Aruba"}, - {"America/Marigot", "America/Port_of_Spain"}, - {"America/Montserrat", "America/Port_of_Spain"}, + {"America/Coral_Harbour", "America/Panama"}, + {"America/Creston", "America/Phoenix"}, + {"America/Curacao", "America/Puerto_Rico"}, + {"America/Dominica", "America/Puerto_Rico"}, + {"America/Grenada", "America/Puerto_Rico"}, + {"America/Guadeloupe", "America/Puerto_Rico"}, + {"America/Kralendijk", "America/Puerto_Rico"}, + {"America/Lower_Princes", "America/Puerto_Rico"}, + {"America/Marigot", "America/Puerto_Rico"}, + {"America/Montreal", "America/Toronto"}, + {"America/Montserrat", "America/Puerto_Rico"}, + {"America/Nassau", "America/Toronto"}, + {"America/Port_of_Spain", "America/Puerto_Rico"}, {"America/Santa_Isabel", "America/Tijuana"}, {"America/Shiprock", "America/Denver"}, - {"America/St_Barthelemy", "America/Port_of_Spain"}, - {"America/St_Kitts", "America/Port_of_Spain"}, - {"America/St_Lucia", "America/Port_of_Spain"}, - {"America/St_Thomas", "America/Port_of_Spain"}, - {"America/St_Vincent", "America/Port_of_Spain"}, - {"America/Toronto", "America/Montreal"}, - {"America/Tortola", "America/Port_of_Spain"}, + {"America/St_Barthelemy", "America/Puerto_Rico"}, + {"America/St_Kitts", "America/Puerto_Rico"}, + {"America/St_Lucia", "America/Puerto_Rico"}, + {"America/St_Thomas", "America/Puerto_Rico"}, + {"America/St_Vincent", "America/Puerto_Rico"}, + {"America/Tortola", "America/Puerto_Rico"}, {"America/Virgin", "America/Puerto_Rico"}, + {"Antarctica/DumontDUrville", "Pacific/Port_Moresby"}, {"Antarctica/South_Pole", "Antarctica/McMurdo"}, + {"Antarctica/Syowa", "Asia/Riyadh"}, {"Arctic/Longyearbyen", "Europe/Oslo"}, - {"Asia/Kuwait", "Asia/Aden"}, + {"Asia/Aden", "Asia/Riyadh"}, + {"Asia/Kuwait", "Asia/Riyadh"}, {"Asia/Muscat", "Asia/Dubai"}, {"Asia/Phnom_Penh", "Asia/Bangkok"}, {"Asia/Qatar", "Asia/Bahrain"}, - {"Asia/Riyadh", "Asia/Aden"}, {"Asia/Vientiane", "Asia/Bangkok"}, {"Atlantic/Jan_Mayen", "Europe/Oslo"}, {"Atlantic/St_Helena", "Africa/Abidjan"}, diff --git a/icu4c/source/test/intltest/tztest.cpp b/icu4c/source/test/intltest/tztest.cpp index 03f953f15..379dc3bc3 100644 --- a/icu4c/source/test/intltest/tztest.cpp +++ b/icu4c/source/test/intltest/tztest.cpp @@ -2003,12 +2003,20 @@ void TimeZoneTest::TestCanonicalIDAPI() { void TimeZoneTest::TestCanonicalID() { - // Some canonical IDs in CLDR are defined as "Link" - // in Olson tzdata. + // Olson (IANA) tzdata used to have very few "Link"s long time ago. + // This test case was written when most of CLDR canonical time zones are + // defined as independent "Zone" in the TZ database. + // Since then, the TZ maintainer found some historic rules in mid 20th century + // were not really reliable, and many zones are now sharing rules. + // As of TZ database release 2022a, there are quite a lot of zones defined + // by "Link" to another zone, so the exception table below becomes really + // big. It might be still useful to make sure CLDR zone aliases are consistent + // with zone rules. static const struct { - const char *alias; - const char *zone; + const char *alias; // link-from + const char *zone; // link-to (A zone ID with "Zone" rule) } excluded1[] = { + {"Africa/Accra", "Africa/Abidjan"}, {"Africa/Addis_Ababa", "Africa/Nairobi"}, {"Africa/Asmera", "Africa/Nairobi"}, {"Africa/Bamako", "Africa/Abidjan"}, @@ -2043,39 +2051,43 @@ void TimeZoneTest::TestCanonicalID() { {"Africa/Ouagadougou", "Africa/Abidjan"}, {"Africa/Porto-Novo", "Africa/Lagos"}, {"Africa/Sao_Tome", "Africa/Abidjan"}, - {"America/Antigua", "America/Port_of_Spain"}, - {"America/Anguilla", "America/Port_of_Spain"}, + {"America/Antigua", "America/Puerto_Rico"}, + {"America/Anguilla", "America/Puerto_Rico"}, + {"America/Aruba", "America/Puerto_Rico"}, + {"America/Atikokan", "America/Panama"}, + {"America/Blanc-Sablon", "America/Puerto_Rico"}, {"America/Cayman", "America/Panama"}, - // TODO(b/204533494): enable this check back. - // Android-Changed: due to issues with time zones canonicity, decision was made to keep - // America/Coral_Harbour as alias to America/Atikokan. - // See more details in system/timezone/RELEASE_NOTES.md - // {"America/Coral_Harbour", "America/Panama"}, - {"America/Curacao", "America/Aruba"}, - {"America/Dominica", "America/Port_of_Spain"}, - {"America/Grenada", "America/Port_of_Spain"}, - {"America/Guadeloupe", "America/Port_of_Spain"}, - {"America/Kralendijk", "America/Aruba"}, - {"America/Lower_Princes", "America/Aruba"}, - {"America/Marigot", "America/Port_of_Spain"}, - {"America/Montserrat", "America/Port_of_Spain"}, + {"America/Coral_Harbour", "America/Panama"}, + {"America/Creston", "America/Phoenix"}, + {"America/Curacao", "America/Puerto_Rico"}, + {"America/Dominica", "America/Puerto_Rico"}, + {"America/Grenada", "America/Puerto_Rico"}, + {"America/Guadeloupe", "America/Puerto_Rico"}, + {"America/Kralendijk", "America/Puerto_Rico"}, + {"America/Lower_Princes", "America/Puerto_Rico"}, + {"America/Marigot", "America/Puerto_Rico"}, + {"America/Montreal", "America/Toronto"}, + {"America/Montserrat", "America/Puerto_Rico"}, + {"America/Nassau", "America/Toronto"}, + {"America/Port_of_Spain", "America/Puerto_Rico"}, {"America/Santa_Isabel", "America/Tijuana"}, {"America/Shiprock", "America/Denver"}, - {"America/St_Barthelemy", "America/Port_of_Spain"}, - {"America/St_Kitts", "America/Port_of_Spain"}, - {"America/St_Lucia", "America/Port_of_Spain"}, - {"America/St_Thomas", "America/Port_of_Spain"}, - {"America/St_Vincent", "America/Port_of_Spain"}, - {"America/Toronto", "America/Montreal"}, - {"America/Tortola", "America/Port_of_Spain"}, + {"America/St_Barthelemy", "America/Puerto_Rico"}, + {"America/St_Kitts", "America/Puerto_Rico"}, + {"America/St_Lucia", "America/Puerto_Rico"}, + {"America/St_Thomas", "America/Puerto_Rico"}, + {"America/St_Vincent", "America/Puerto_Rico"}, + {"America/Tortola", "America/Puerto_Rico"}, {"America/Virgin", "America/Puerto_Rico"}, + {"Antarctica/DumontDUrville", "Pacific/Port_Moresby"}, {"Antarctica/South_Pole", "Antarctica/McMurdo"}, + {"Antarctica/Syowa", "Asia/Riyadh"}, {"Arctic/Longyearbyen", "Europe/Oslo"}, - {"Asia/Kuwait", "Asia/Aden"}, + {"Asia/Aden", "Asia/Riyadh"}, + {"Asia/Kuwait", "Asia/Riyadh"}, {"Asia/Muscat", "Asia/Dubai"}, {"Asia/Phnom_Penh", "Asia/Bangkok"}, {"Asia/Qatar", "Asia/Bahrain"}, - {"Asia/Riyadh", "Asia/Aden"}, {"Asia/Vientiane", "Asia/Bangkok"}, {"Atlantic/Jan_Mayen", "Europe/Oslo"}, {"Atlantic/St_Helena", "Africa/Abidjan"}, diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java index 4cde05963..919daf33f 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java @@ -1502,9 +1502,18 @@ public class TimeZoneTest extends TestFmwk @Test public void TestCanonicalID() { - // Some canonical IDs in CLDR are defined as "Link" - // in Olson tzdata. + // Olson (IANA) tzdata used to have very few "Link"s long time ago. + // This test case was written when most of CLDR canonical time zones are + // defined as independent "Zone" in the TZ database. + // Since then, the TZ maintainer found some historic rules in mid 20th century + // were not really reliable, and many zones are now sharing rules. + // As of TZ database release 2022a, there are quite a lot of zones defined + // by "Link" to another zone, so the exception table below becomes really + // big. It might be still useful to make sure CLDR zone aliases are consistent + // with zone rules. final String[][] excluded1 = { + // {"<link-from>", "<link-to> (A zone ID with "Zone" rule)"}, + {"Africa/Accra", "Africa/Abidjan"}, {"Africa/Addis_Ababa", "Africa/Nairobi"}, {"Africa/Asmera", "Africa/Nairobi"}, {"Africa/Bamako", "Africa/Abidjan"}, @@ -1539,39 +1548,43 @@ public class TimeZoneTest extends TestFmwk {"Africa/Ouagadougou", "Africa/Abidjan"}, {"Africa/Porto-Novo", "Africa/Lagos"}, {"Africa/Sao_Tome", "Africa/Abidjan"}, - {"America/Antigua", "America/Port_of_Spain"}, - {"America/Anguilla", "America/Port_of_Spain"}, + {"America/Antigua", "America/Puerto_Rico"}, + {"America/Anguilla", "America/Puerto_Rico"}, + {"America/Aruba", "America/Puerto_Rico"}, + {"America/Atikokan", "America/Panama"}, + {"America/Blanc-Sablon", "America/Puerto_Rico"}, {"America/Cayman", "America/Panama"}, - // TODO(b/204533494): enable this check back. - // Android-Changed: due to issues with time zones canonicity, decision was made - // to keep America/Coral_Harbour as alias to America/Atikokan. - // See more details in system/timezone/RELEASE_NOTES.md - // {"America/Coral_Harbour", "America/Panama"}, - {"America/Curacao", "America/Aruba"}, - {"America/Dominica", "America/Port_of_Spain"}, - {"America/Grenada", "America/Port_of_Spain"}, - {"America/Guadeloupe", "America/Port_of_Spain"}, - {"America/Kralendijk", "America/Aruba"}, - {"America/Lower_Princes", "America/Aruba"}, - {"America/Marigot", "America/Port_of_Spain"}, - {"America/Montserrat", "America/Port_of_Spain"}, + {"America/Coral_Harbour", "America/Panama"}, + {"America/Creston", "America/Phoenix"}, + {"America/Curacao", "America/Puerto_Rico"}, + {"America/Dominica", "America/Puerto_Rico"}, + {"America/Grenada", "America/Puerto_Rico"}, + {"America/Guadeloupe", "America/Puerto_Rico"}, + {"America/Kralendijk", "America/Puerto_Rico"}, + {"America/Lower_Princes", "America/Puerto_Rico"}, + {"America/Marigot", "America/Puerto_Rico"}, + {"America/Montreal", "America/Toronto"}, + {"America/Montserrat", "America/Puerto_Rico"}, + {"America/Nassau", "America/Toronto"}, + {"America/Port_of_Spain", "America/Puerto_Rico"}, {"America/Santa_Isabel", "America/Tijuana"}, {"America/Shiprock", "America/Denver"}, - {"America/St_Barthelemy", "America/Port_of_Spain"}, - {"America/St_Kitts", "America/Port_of_Spain"}, - {"America/St_Lucia", "America/Port_of_Spain"}, - {"America/St_Thomas", "America/Port_of_Spain"}, - {"America/St_Vincent", "America/Port_of_Spain"}, - {"America/Toronto", "America/Montreal"}, - {"America/Tortola", "America/Port_of_Spain"}, + {"America/St_Barthelemy", "America/Puerto_Rico"}, + {"America/St_Kitts", "America/Puerto_Rico"}, + {"America/St_Lucia", "America/Puerto_Rico"}, + {"America/St_Thomas", "America/Puerto_Rico"}, + {"America/St_Vincent", "America/Puerto_Rico"}, + {"America/Tortola", "America/Puerto_Rico"}, {"America/Virgin", "America/Puerto_Rico"}, + {"Antarctica/DumontDUrville", "Pacific/Port_Moresby"}, {"Antarctica/South_Pole", "Antarctica/McMurdo"}, + {"Antarctica/Syowa", "Asia/Riyadh"}, {"Arctic/Longyearbyen", "Europe/Oslo"}, - {"Asia/Kuwait", "Asia/Aden"}, + {"Asia/Aden", "Asia/Riyadh"}, + {"Asia/Kuwait", "Asia/Riyadh"}, {"Asia/Muscat", "Asia/Dubai"}, {"Asia/Phnom_Penh", "Asia/Bangkok"}, {"Asia/Qatar", "Asia/Bahrain"}, - {"Asia/Riyadh", "Asia/Aden"}, {"Asia/Vientiane", "Asia/Bangkok"}, {"Atlantic/Jan_Mayen", "Europe/Oslo"}, {"Atlantic/St_Helena", "Africa/Abidjan"}, |