From c8cd07cac8ac09882cc44cc69a4ecefaaa5c69a6 Mon Sep 17 00:00:00 2001
From: Bradley White <14679271+devbww@users.noreply.github.com>
Date: Sat, 23 Sep 2023 08:03:30 -0400
Subject: [PATCH] test: trim the kTimeZoneNames[] lists to "real" zones (#276)

Debian/Trixie has split the zoneinfo files into two packages: "tzdata"
and "tzdata-legacy", the latter of which may not be installed.

To facilitate testing in a Debian "tzdata"-only environment, lets trim
the `kTimeZoneNames[]` lists to only contain zones from that package.

Aside: Even so, "testdata/zoneinfo" will continue to contain all the
backward/backzone zones.

Fixes #274.
---
 src/cctz_benchmark.cc        | 113 +----------------------------------
 src/time_zone_lookup_test.cc | 112 ----------------------------------
 2 files changed, 1 insertion(+), 224 deletions(-)

diff --git a/src/cctz_benchmark.cc b/src/cctz_benchmark.cc
index 3d0d915..33fd2b1 100644
--- a/src/cctz_benchmark.cc
+++ b/src/cctz_benchmark.cc
@@ -109,7 +109,6 @@ const char* const kTimeZoneNames[] = {
   "Africa/Addis_Ababa",
   "Africa/Algiers",
   "Africa/Asmara",
-  "Africa/Asmera",
   "Africa/Bamako",
   "Africa/Bangui",
   "Africa/Banjul",
@@ -165,7 +164,6 @@ const char* const kTimeZoneNames[] = {
   "America/Araguaina",
   "America/Argentina/Buenos_Aires",
   "America/Argentina/Catamarca",
-  "America/Argentina/ComodRivadavia",
   "America/Argentina/Cordoba",
   "America/Argentina/Jujuy",
   "America/Argentina/La_Rioja",
@@ -189,18 +187,16 @@ const char* const kTimeZoneNames[] = {
   "America/Boa_Vista",
   "America/Bogota",
   "America/Boise",
-  "America/Buenos_Aires",
   "America/Cambridge_Bay",
   "America/Campo_Grande",
   "America/Cancun",
   "America/Caracas",
-  "America/Catamarca",
   "America/Cayenne",
   "America/Cayman",
   "America/Chicago",
   "America/Chihuahua",
+  "America/Ciudad_Juarez",
   "America/Coral_Harbour",
-  "America/Cordoba",
   "America/Costa_Rica",
   "America/Creston",
   "America/Cuiaba",
@@ -216,7 +212,6 @@ const char* const kTimeZoneNames[] = {
   "America/El_Salvador",
   "America/Ensenada",
   "America/Fort_Nelson",
-  "America/Fort_Wayne",
   "America/Fortaleza",
   "America/Glace_Bay",
   "America/Godthab",
@@ -238,20 +233,16 @@ const char* const kTimeZoneNames[] = {
   "America/Indiana/Vevay",
   "America/Indiana/Vincennes",
   "America/Indiana/Winamac",
-  "America/Indianapolis",
   "America/Inuvik",
   "America/Iqaluit",
   "America/Jamaica",
-  "America/Jujuy",
   "America/Juneau",
   "America/Kentucky/Louisville",
   "America/Kentucky/Monticello",
-  "America/Knox_IN",
   "America/Kralendijk",
   "America/La_Paz",
   "America/Lima",
   "America/Los_Angeles",
-  "America/Louisville",
   "America/Lower_Princes",
   "America/Maceio",
   "America/Managua",
@@ -260,7 +251,6 @@ const char* const kTimeZoneNames[] = {
   "America/Martinique",
   "America/Matamoros",
   "America/Mazatlan",
-  "America/Mendoza",
   "America/Menominee",
   "America/Merida",
   "America/Metlakatla",
@@ -297,7 +287,6 @@ const char* const kTimeZoneNames[] = {
   "America/Regina",
   "America/Resolute",
   "America/Rio_Branco",
-  "America/Rosario",
   "America/Santa_Isabel",
   "America/Santarem",
   "America/Santiago",
@@ -333,7 +322,6 @@ const char* const kTimeZoneNames[] = {
   "Antarctica/McMurdo",
   "Antarctica/Palmer",
   "Antarctica/Rothera",
-  "Antarctica/South_Pole",
   "Antarctica/Syowa",
   "Antarctica/Troll",
   "Antarctica/Vostok",
@@ -345,7 +333,6 @@ const char* const kTimeZoneNames[] = {
   "Asia/Aqtau",
   "Asia/Aqtobe",
   "Asia/Ashgabat",
-  "Asia/Ashkhabad",
   "Asia/Atyrau",
   "Asia/Baghdad",
   "Asia/Bahrain",
@@ -355,13 +342,10 @@ const char* const kTimeZoneNames[] = {
   "Asia/Beirut",
   "Asia/Bishkek",
   "Asia/Brunei",
-  "Asia/Calcutta",
   "Asia/Chita",
   "Asia/Choibalsan",
   "Asia/Chongqing",
-  "Asia/Chungking",
   "Asia/Colombo",
-  "Asia/Dacca",
   "Asia/Damascus",
   "Asia/Dhaka",
   "Asia/Dili",
@@ -384,14 +368,12 @@ const char* const kTimeZoneNames[] = {
   "Asia/Karachi",
   "Asia/Kashgar",
   "Asia/Kathmandu",
-  "Asia/Katmandu",
   "Asia/Khandyga",
   "Asia/Kolkata",
   "Asia/Krasnoyarsk",
   "Asia/Kuala_Lumpur",
   "Asia/Kuching",
   "Asia/Kuwait",
-  "Asia/Macao",
   "Asia/Macau",
   "Asia/Magadan",
   "Asia/Makassar",
@@ -408,9 +390,7 @@ const char* const kTimeZoneNames[] = {
   "Asia/Qatar",
   "Asia/Qostanay",
   "Asia/Qyzylorda",
-  "Asia/Rangoon",
   "Asia/Riyadh",
-  "Asia/Saigon",
   "Asia/Sakhalin",
   "Asia/Samarkand",
   "Asia/Seoul",
@@ -422,13 +402,10 @@ const char* const kTimeZoneNames[] = {
   "Asia/Tbilisi",
   "Asia/Tehran",
   "Asia/Tel_Aviv",
-  "Asia/Thimbu",
   "Asia/Thimphu",
   "Asia/Tokyo",
   "Asia/Tomsk",
-  "Asia/Ujung_Pandang",
   "Asia/Ulaanbaatar",
-  "Asia/Ulan_Bator",
   "Asia/Urumqi",
   "Asia/Ust-Nera",
   "Asia/Vientiane",
@@ -441,7 +418,6 @@ const char* const kTimeZoneNames[] = {
   "Atlantic/Bermuda",
   "Atlantic/Canary",
   "Atlantic/Cape_Verde",
-  "Atlantic/Faeroe",
   "Atlantic/Faroe",
   "Atlantic/Jan_Mayen",
   "Atlantic/Madeira",
@@ -449,7 +425,6 @@ const char* const kTimeZoneNames[] = {
   "Atlantic/South_Georgia",
   "Atlantic/St_Helena",
   "Atlantic/Stanley",
-  "Australia/ACT",
   "Australia/Adelaide",
   "Australia/Brisbane",
   "Australia/Broken_Hill",
@@ -458,42 +433,12 @@ const char* const kTimeZoneNames[] = {
   "Australia/Darwin",
   "Australia/Eucla",
   "Australia/Hobart",
-  "Australia/LHI",
   "Australia/Lindeman",
   "Australia/Lord_Howe",
   "Australia/Melbourne",
-  "Australia/NSW",
-  "Australia/North",
   "Australia/Perth",
-  "Australia/Queensland",
-  "Australia/South",
   "Australia/Sydney",
-  "Australia/Tasmania",
-  "Australia/Victoria",
-  "Australia/West",
   "Australia/Yancowinna",
-  "Brazil/Acre",
-  "Brazil/DeNoronha",
-  "Brazil/East",
-  "Brazil/West",
-  "CET",
-  "CST6CDT",
-  "Canada/Atlantic",
-  "Canada/Central",
-  "Canada/Eastern",
-  "Canada/Mountain",
-  "Canada/Newfoundland",
-  "Canada/Pacific",
-  "Canada/Saskatchewan",
-  "Canada/Yukon",
-  "Chile/Continental",
-  "Chile/EasterIsland",
-  "Cuba",
-  "EET",
-  "EST",
-  "EST5EDT",
-  "Egypt",
-  "Eire",
   "Etc/GMT",
   "Etc/GMT+0",
   "Etc/GMT+1",
@@ -551,7 +496,6 @@ const char* const kTimeZoneNames[] = {
   "Europe/Istanbul",
   "Europe/Jersey",
   "Europe/Kaliningrad",
-  "Europe/Kiev",
   "Europe/Kirov",
   "Europe/Kyiv",
   "Europe/Lisbon",
@@ -583,7 +527,6 @@ const char* const kTimeZoneNames[] = {
   "Europe/Tirane",
   "Europe/Tiraspol",
   "Europe/Ulyanovsk",
-  "Europe/Uzhgorod",
   "Europe/Vaduz",
   "Europe/Vatican",
   "Europe/Vienna",
@@ -591,19 +534,8 @@ const char* const kTimeZoneNames[] = {
   "Europe/Volgograd",
   "Europe/Warsaw",
   "Europe/Zagreb",
-  "Europe/Zaporozhye",
   "Europe/Zurich",
   "Factory",
-  "GB",
-  "GB-Eire",
-  "GMT",
-  "GMT+0",
-  "GMT-0",
-  "GMT0",
-  "Greenwich",
-  "HST",
-  "Hongkong",
-  "Iceland",
   "Indian/Antananarivo",
   "Indian/Chagos",
   "Indian/Christmas",
@@ -615,23 +547,6 @@ const char* const kTimeZoneNames[] = {
   "Indian/Mauritius",
   "Indian/Mayotte",
   "Indian/Reunion",
-  "Iran",
-  "Israel",
-  "Jamaica",
-  "Japan",
-  "Kwajalein",
-  "Libya",
-  "MET",
-  "MST",
-  "MST7MDT",
-  "Mexico/BajaNorte",
-  "Mexico/BajaSur",
-  "Mexico/General",
-  "NZ",
-  "NZ-CHAT",
-  "Navajo",
-  "PRC",
-  "PST8PDT",
   "Pacific/Apia",
   "Pacific/Auckland",
   "Pacific/Bougainville",
@@ -639,7 +554,6 @@ const char* const kTimeZoneNames[] = {
   "Pacific/Chuuk",
   "Pacific/Easter",
   "Pacific/Efate",
-  "Pacific/Enderbury",
   "Pacific/Fakaofo",
   "Pacific/Fiji",
   "Pacific/Funafuti",
@@ -664,7 +578,6 @@ const char* const kTimeZoneNames[] = {
   "Pacific/Palau",
   "Pacific/Pitcairn",
   "Pacific/Pohnpei",
-  "Pacific/Ponape",
   "Pacific/Port_Moresby",
   "Pacific/Rarotonga",
   "Pacific/Saipan",
@@ -672,34 +585,10 @@ const char* const kTimeZoneNames[] = {
   "Pacific/Tahiti",
   "Pacific/Tarawa",
   "Pacific/Tongatapu",
-  "Pacific/Truk",
   "Pacific/Wake",
   "Pacific/Wallis",
   "Pacific/Yap",
-  "Poland",
-  "Portugal",
-  "ROC",
-  "ROK",
-  "Singapore",
-  "Turkey",
-  "UCT",
-  "US/Alaska",
-  "US/Aleutian",
-  "US/Arizona",
-  "US/Central",
-  "US/East-Indiana",
-  "US/Eastern",
-  "US/Hawaii",
-  "US/Indiana-Starke",
-  "US/Michigan",
-  "US/Mountain",
-  "US/Pacific",
-  "US/Samoa",
   "UTC",
-  "Universal",
-  "W-SU",
-  "WET",
-  "Zulu",
   nullptr
 };
 
diff --git a/src/time_zone_lookup_test.cc b/src/time_zone_lookup_test.cc
index 9407109..700a1a1 100644
--- a/src/time_zone_lookup_test.cc
+++ b/src/time_zone_lookup_test.cc
@@ -42,7 +42,6 @@ const char* const kTimeZoneNames[] = {
   "Africa/Addis_Ababa",
   "Africa/Algiers",
   "Africa/Asmara",
-  "Africa/Asmera",
   "Africa/Bamako",
   "Africa/Bangui",
   "Africa/Banjul",
@@ -98,7 +97,6 @@ const char* const kTimeZoneNames[] = {
   "America/Araguaina",
   "America/Argentina/Buenos_Aires",
   "America/Argentina/Catamarca",
-  "America/Argentina/ComodRivadavia",
   "America/Argentina/Cordoba",
   "America/Argentina/Jujuy",
   "America/Argentina/La_Rioja",
@@ -122,19 +120,16 @@ const char* const kTimeZoneNames[] = {
   "America/Boa_Vista",
   "America/Bogota",
   "America/Boise",
-  "America/Buenos_Aires",
   "America/Cambridge_Bay",
   "America/Campo_Grande",
   "America/Cancun",
   "America/Caracas",
-  "America/Catamarca",
   "America/Cayenne",
   "America/Cayman",
   "America/Chicago",
   "America/Chihuahua",
   "America/Ciudad_Juarez",
   "America/Coral_Harbour",
-  "America/Cordoba",
   "America/Costa_Rica",
   "America/Creston",
   "America/Cuiaba",
@@ -150,7 +145,6 @@ const char* const kTimeZoneNames[] = {
   "America/El_Salvador",
   "America/Ensenada",
   "America/Fort_Nelson",
-  "America/Fort_Wayne",
   "America/Fortaleza",
   "America/Glace_Bay",
   "America/Godthab",
@@ -172,20 +166,16 @@ const char* const kTimeZoneNames[] = {
   "America/Indiana/Vevay",
   "America/Indiana/Vincennes",
   "America/Indiana/Winamac",
-  "America/Indianapolis",
   "America/Inuvik",
   "America/Iqaluit",
   "America/Jamaica",
-  "America/Jujuy",
   "America/Juneau",
   "America/Kentucky/Louisville",
   "America/Kentucky/Monticello",
-  "America/Knox_IN",
   "America/Kralendijk",
   "America/La_Paz",
   "America/Lima",
   "America/Los_Angeles",
-  "America/Louisville",
   "America/Lower_Princes",
   "America/Maceio",
   "America/Managua",
@@ -194,7 +184,6 @@ const char* const kTimeZoneNames[] = {
   "America/Martinique",
   "America/Matamoros",
   "America/Mazatlan",
-  "America/Mendoza",
   "America/Menominee",
   "America/Merida",
   "America/Metlakatla",
@@ -231,7 +220,6 @@ const char* const kTimeZoneNames[] = {
   "America/Regina",
   "America/Resolute",
   "America/Rio_Branco",
-  "America/Rosario",
   "America/Santa_Isabel",
   "America/Santarem",
   "America/Santiago",
@@ -267,7 +255,6 @@ const char* const kTimeZoneNames[] = {
   "Antarctica/McMurdo",
   "Antarctica/Palmer",
   "Antarctica/Rothera",
-  "Antarctica/South_Pole",
   "Antarctica/Syowa",
   "Antarctica/Troll",
   "Antarctica/Vostok",
@@ -279,7 +266,6 @@ const char* const kTimeZoneNames[] = {
   "Asia/Aqtau",
   "Asia/Aqtobe",
   "Asia/Ashgabat",
-  "Asia/Ashkhabad",
   "Asia/Atyrau",
   "Asia/Baghdad",
   "Asia/Bahrain",
@@ -289,13 +275,10 @@ const char* const kTimeZoneNames[] = {
   "Asia/Beirut",
   "Asia/Bishkek",
   "Asia/Brunei",
-  "Asia/Calcutta",
   "Asia/Chita",
   "Asia/Choibalsan",
   "Asia/Chongqing",
-  "Asia/Chungking",
   "Asia/Colombo",
-  "Asia/Dacca",
   "Asia/Damascus",
   "Asia/Dhaka",
   "Asia/Dili",
@@ -318,14 +301,12 @@ const char* const kTimeZoneNames[] = {
   "Asia/Karachi",
   "Asia/Kashgar",
   "Asia/Kathmandu",
-  "Asia/Katmandu",
   "Asia/Khandyga",
   "Asia/Kolkata",
   "Asia/Krasnoyarsk",
   "Asia/Kuala_Lumpur",
   "Asia/Kuching",
   "Asia/Kuwait",
-  "Asia/Macao",
   "Asia/Macau",
   "Asia/Magadan",
   "Asia/Makassar",
@@ -342,9 +323,7 @@ const char* const kTimeZoneNames[] = {
   "Asia/Qatar",
   "Asia/Qostanay",
   "Asia/Qyzylorda",
-  "Asia/Rangoon",
   "Asia/Riyadh",
-  "Asia/Saigon",
   "Asia/Sakhalin",
   "Asia/Samarkand",
   "Asia/Seoul",
@@ -356,13 +335,10 @@ const char* const kTimeZoneNames[] = {
   "Asia/Tbilisi",
   "Asia/Tehran",
   "Asia/Tel_Aviv",
-  "Asia/Thimbu",
   "Asia/Thimphu",
   "Asia/Tokyo",
   "Asia/Tomsk",
-  "Asia/Ujung_Pandang",
   "Asia/Ulaanbaatar",
-  "Asia/Ulan_Bator",
   "Asia/Urumqi",
   "Asia/Ust-Nera",
   "Asia/Vientiane",
@@ -375,7 +351,6 @@ const char* const kTimeZoneNames[] = {
   "Atlantic/Bermuda",
   "Atlantic/Canary",
   "Atlantic/Cape_Verde",
-  "Atlantic/Faeroe",
   "Atlantic/Faroe",
   "Atlantic/Jan_Mayen",
   "Atlantic/Madeira",
@@ -383,7 +358,6 @@ const char* const kTimeZoneNames[] = {
   "Atlantic/South_Georgia",
   "Atlantic/St_Helena",
   "Atlantic/Stanley",
-  "Australia/ACT",
   "Australia/Adelaide",
   "Australia/Brisbane",
   "Australia/Broken_Hill",
@@ -392,42 +366,12 @@ const char* const kTimeZoneNames[] = {
   "Australia/Darwin",
   "Australia/Eucla",
   "Australia/Hobart",
-  "Australia/LHI",
   "Australia/Lindeman",
   "Australia/Lord_Howe",
   "Australia/Melbourne",
-  "Australia/NSW",
-  "Australia/North",
   "Australia/Perth",
-  "Australia/Queensland",
-  "Australia/South",
   "Australia/Sydney",
-  "Australia/Tasmania",
-  "Australia/Victoria",
-  "Australia/West",
   "Australia/Yancowinna",
-  "Brazil/Acre",
-  "Brazil/DeNoronha",
-  "Brazil/East",
-  "Brazil/West",
-  "CET",
-  "CST6CDT",
-  "Canada/Atlantic",
-  "Canada/Central",
-  "Canada/Eastern",
-  "Canada/Mountain",
-  "Canada/Newfoundland",
-  "Canada/Pacific",
-  "Canada/Saskatchewan",
-  "Canada/Yukon",
-  "Chile/Continental",
-  "Chile/EasterIsland",
-  "Cuba",
-  "EET",
-  "EST",
-  "EST5EDT",
-  "Egypt",
-  "Eire",
   "Etc/GMT",
   "Etc/GMT+0",
   "Etc/GMT+1",
@@ -485,7 +429,6 @@ const char* const kTimeZoneNames[] = {
   "Europe/Istanbul",
   "Europe/Jersey",
   "Europe/Kaliningrad",
-  "Europe/Kiev",
   "Europe/Kirov",
   "Europe/Kyiv",
   "Europe/Lisbon",
@@ -517,7 +460,6 @@ const char* const kTimeZoneNames[] = {
   "Europe/Tirane",
   "Europe/Tiraspol",
   "Europe/Ulyanovsk",
-  "Europe/Uzhgorod",
   "Europe/Vaduz",
   "Europe/Vatican",
   "Europe/Vienna",
@@ -525,19 +467,8 @@ const char* const kTimeZoneNames[] = {
   "Europe/Volgograd",
   "Europe/Warsaw",
   "Europe/Zagreb",
-  "Europe/Zaporozhye",
   "Europe/Zurich",
   "Factory",
-  "GB",
-  "GB-Eire",
-  "GMT",
-  "GMT+0",
-  "GMT-0",
-  "GMT0",
-  "Greenwich",
-  "HST",
-  "Hongkong",
-  "Iceland",
   "Indian/Antananarivo",
   "Indian/Chagos",
   "Indian/Christmas",
@@ -549,23 +480,6 @@ const char* const kTimeZoneNames[] = {
   "Indian/Mauritius",
   "Indian/Mayotte",
   "Indian/Reunion",
-  "Iran",
-  "Israel",
-  "Jamaica",
-  "Japan",
-  "Kwajalein",
-  "Libya",
-  "MET",
-  "MST",
-  "MST7MDT",
-  "Mexico/BajaNorte",
-  "Mexico/BajaSur",
-  "Mexico/General",
-  "NZ",
-  "NZ-CHAT",
-  "Navajo",
-  "PRC",
-  "PST8PDT",
   "Pacific/Apia",
   "Pacific/Auckland",
   "Pacific/Bougainville",
@@ -573,7 +487,6 @@ const char* const kTimeZoneNames[] = {
   "Pacific/Chuuk",
   "Pacific/Easter",
   "Pacific/Efate",
-  "Pacific/Enderbury",
   "Pacific/Fakaofo",
   "Pacific/Fiji",
   "Pacific/Funafuti",
@@ -598,7 +511,6 @@ const char* const kTimeZoneNames[] = {
   "Pacific/Palau",
   "Pacific/Pitcairn",
   "Pacific/Pohnpei",
-  "Pacific/Ponape",
   "Pacific/Port_Moresby",
   "Pacific/Rarotonga",
   "Pacific/Saipan",
@@ -606,34 +518,10 @@ const char* const kTimeZoneNames[] = {
   "Pacific/Tahiti",
   "Pacific/Tarawa",
   "Pacific/Tongatapu",
-  "Pacific/Truk",
   "Pacific/Wake",
   "Pacific/Wallis",
   "Pacific/Yap",
-  "Poland",
-  "Portugal",
-  "ROC",
-  "ROK",
-  "Singapore",
-  "Turkey",
-  "UCT",
-  "US/Alaska",
-  "US/Aleutian",
-  "US/Arizona",
-  "US/Central",
-  "US/East-Indiana",
-  "US/Eastern",
-  "US/Hawaii",
-  "US/Indiana-Starke",
-  "US/Michigan",
-  "US/Mountain",
-  "US/Pacific",
-  "US/Samoa",
   "UTC",
-  "Universal",
-  "W-SU",
-  "WET",
-  "Zulu",
   nullptr
 };