diff --git a/CHANGELOG.md b/CHANGELOG.md index 50f717265..4e0271a7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Security in case of vulnerabilities. ## [Unreleased] +- Update iana_to_rails_time_zone mappings for 11 tz's, add time zone data consistency tests[#259](https://github.com/Shopify/worldwide/pull/259) - Add consistency test for default and optional field labels [#258](https://github.com/Shopify/worldwide/pull/258) --- diff --git a/db/data/iana_to_rails_time_zone.yml b/db/data/iana_to_rails_time_zone.yml index 0671ed6ea..acc5080ed 100644 --- a/db/data/iana_to_rails_time_zone.yml +++ b/db/data/iana_to_rails_time_zone.yml @@ -84,7 +84,7 @@ America/Barbados: America/Puerto_Rico America/Belem: America/Sao_Paulo America/Belize: America/Mexico_City America/Blanc-Sablon: America/Puerto_Rico -America/Boa_Vista: America/Caracas +America/Boa_Vista: America/Caracas America/Bogota: America/Bogota America/Boise: America/Denver America/Buenos_Aires: America/Argentina/Buenos_Aires @@ -101,10 +101,10 @@ America/Ciudad_Juarez: America/Denver America/Coral_Harbour: America/Bogota America/Cordoba: America/Argentina/Buenos_Aires America/Costa_Rica: America/Mexico_City -America/Creston: America/Phoenix +America/Creston: America/Phoenix America/Cuiaba: America/Caracas America/Curacao: America/Puerto_Rico -America/Danmarkshavn: Etc/Utc +America/Danmarkshavn: Etc/UTC America/Dawson: America/Phoenix America/Dawson_Creek: America/Phoenix America/Denver: America/Denver @@ -123,9 +123,9 @@ America/Goose_Bay: America/Halifax America/Grand_Turk: America/New_York America/Grenada: America/Puerto_Rico America/Guadeloupe: America/Puerto_Rico -America/Guatemala: America/Mexico_City +America/Guatemala: America/Guatemala America/Guayaquil: America/Bogota -America/Guyana: America/Caracas +America/Guyana: America/Guyana America/Halifax: America/Halifax America/Havana: America/New_York America/Hermosillo: America/Phoenix @@ -167,7 +167,7 @@ America/Mexico_City: America/Mexico_City # America/Miquelon inexact match America/Miquelon: Atlantic/South_Georgia America/Moncton: America/Halifax -America/Monterrey: America/Mexico_City +America/Monterrey: America/Monterrey America/Montevideo: America/Montevideo America/Montreal: America/New_York America/Montserrat: America/Puerto_Rico @@ -289,15 +289,15 @@ Asia/Katmandu: Asia/Kathmandu Asia/Khandyga: Asia/Yakutsk Asia/Kolkata: Asia/Kolkata Asia/Krasnoyarsk: Asia/Krasnoyarsk -Asia/Kuala_Lumpur: Asia/Kuala_Lumpur +Asia/Kuala_Lumpur: Asia/Kuala_Lumpur Asia/Kuching: Asia/Kuala_Lumpur -Asia/Kuwait: Asia/Riyadh +Asia/Kuwait: Asia/Kuwait Asia/Macao: Asia/Shanghai Asia/Macau: Asia/Shanghai Asia/Magadan: Asia/Magadan Asia/Makassar: Asia/Kuala_Lumpur Asia/Manila: Asia/Kuala_Lumpur -Asia/Muscat: Asia/Yerevan +Asia/Muscat: Asia/Muscat Asia/Nicosia: Europe/Athens Asia/Novokuznetsk: Asia/Novosibirsk Asia/Novosibirsk: Asia/Novosibirsk @@ -364,8 +364,8 @@ Australia/Hobart: Australia/Hobart Australia/LHI: Pacific/Noumea Australia/Lindeman: Australia/Brisbane # Australia/Lord_Howe inexact match -Australia/Lord_Howe: Pacific/Noumea -Australia/Melbourne: Australia/Melbourne +Australia/Lord_Howe: Pacific/Noumea +Australia/Melbourne: Australia/Melbourne Australia/North: Australia/Darwin Australia/NSW: Australia/Sydney Australia/Perth: Australia/Perth @@ -436,7 +436,7 @@ Etc/UCT: Etc/UTC Etc/Universal: Etc/UTC Etc/UTC: Etc/UTC Etc/Zulu: Etc/UTC -Europe/Amsterdam: Europe/Brussels +Europe/Amsterdam: Europe/Amsterdam Europe/Andorra: Europe/Brussels Europe/Astrakhan: Asia/Yerevan Europe/Athens: Europe/Athens @@ -462,7 +462,7 @@ Europe/Kiev: Europe/Kiev Europe/Kirov: Europe/Moscow Europe/Kyiv: Europe/Kiev Europe/Lisbon: Europe/Lisbon -Europe/Ljubljana: Europe/Belgrade +Europe/Ljubljana: Europe/Ljubljana Europe/London: Europe/London Europe/Luxembourg: Europe/Brussels Europe/Madrid: Europe/Madrid @@ -480,11 +480,11 @@ Europe/Riga: Europe/Riga Europe/Rome: Europe/Rome Europe/Samara: Europe/Samara Europe/San_Marino: Europe/Rome -Europe/Sarajevo: Europe/Belgrade +Europe/Sarajevo: Europe/Sarajevo Europe/Saratov: Asia/Yerevan Europe/Simferopol: Europe/Moscow -Europe/Skopje: Europe/Belgrade -Europe/Sofia: Europe/Sofia +Europe/Skopje: Europe/Skopje +Europe/Sofia: Europe/Sofia Europe/Stockholm: Europe/Stockholm Europe/Tallinn: Europe/Tallinn Europe/Tirane: Europe/Belgrade @@ -497,7 +497,7 @@ Europe/Vienna: Europe/Vienna Europe/Vilnius: Europe/Vilnius Europe/Volgograd: Europe/Volgograd Europe/Warsaw: Europe/Warsaw -Europe/Zagreb: Europe/Belgrade +Europe/Zagreb: Europe/Zagreb Europe/Zaporozhye: Europe/Kiev Europe/Zurich: Europe/Zurich Factory: Etc/UTC @@ -551,7 +551,7 @@ Pacific/Funafuti: Pacific/Majuro Pacific/Galapagos: America/Mexico_City # Pacific/Gambier inexact match Pacific/Gambier: Pacific/Honolulu -Pacific/Guadalcanal: Pacific/Noumea +Pacific/Guadalcanal: Pacific/Guadalcanal Pacific/Guam: Pacific/Guam Pacific/Honolulu: Pacific/Honolulu Pacific/Johnston: Pacific/Honolulu diff --git a/lib/worldwide/paths.rb b/lib/worldwide/paths.rb index 8787b8d6b..c6e3b070e 100644 --- a/lib/worldwide/paths.rb +++ b/lib/worldwide/paths.rb @@ -9,5 +9,6 @@ module Paths GENERATED_LOCALE_ROOT = File.join(OTHER_DATA_ROOT, "generated") DB_DATA_ROOT = File.join(GEM_ROOT, "db/data") REGIONS_ROOT = File.join(DB_DATA_ROOT, "regions") + TIME_ZONE_ROOT = File.join(OTHER_DATA_ROOT, "timezones") end end diff --git a/test/test_helper.rb b/test/test_helper.rb index 89610f219..0b85f23e1 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,6 +8,7 @@ require "minitest/reporters" require "minitest/focus" unless ENV["CI"] require "mocha/minitest" +require "pry-byebug" # All the locales used in the tests I18n.available_locales = Worldwide::Locales.known diff --git a/test/worldwide/deprecated_time_zone_mapper_test.rb b/test/worldwide/deprecated_time_zone_mapper_test.rb index 24d427708..466564799 100644 --- a/test/worldwide/deprecated_time_zone_mapper_test.rb +++ b/test/worldwide/deprecated_time_zone_mapper_test.rb @@ -48,602 +48,13 @@ class TimeZoneTest < ActiveSupport::TestCase def iana_data_input_expected [ ["Africa/Abidjan", "Africa/Monrovia"], - ["Africa/Accra", "Africa/Monrovia"], - ["Africa/Addis_Ababa", "Africa/Nairobi"], - ["Africa/Algiers", "Africa/Algiers"], - ["Africa/Asmara", "Africa/Nairobi"], - ["Africa/Asmera", "Africa/Nairobi"], - ["Africa/Bamako", "Africa/Monrovia"], - ["Africa/Bangui", "Africa/Algiers"], - ["Africa/Banjul", "Africa/Monrovia"], - ["Africa/Bissau", "Africa/Monrovia"], - ["Africa/Blantyre", "Africa/Harare"], - ["Africa/Brazzaville", "Africa/Algiers"], - ["Africa/Bujumbura", "Africa/Harare"], - ["Africa/Cairo", "Africa/Cairo"], - ["Africa/Casablanca", "Africa/Casablanca"], - ["Africa/Ceuta", "Europe/Madrid"], - ["Africa/Conakry", "Africa/Monrovia"], - ["Africa/Dakar", "Africa/Monrovia"], - ["Africa/Dar_es_Salaam", "Africa/Nairobi"], - ["Africa/Djibouti", "Africa/Nairobi"], - ["Africa/Douala", "Africa/Algiers"], - ["Africa/El_Aaiun", "Africa/Casablanca"], - ["Africa/Freetown", "Africa/Monrovia"], - ["Africa/Gaborone", "Africa/Harare"], - ["Africa/Harare", "Africa/Harare"], - ["Africa/Johannesburg", "Africa/Johannesburg"], - ["Africa/Juba", "Africa/Harare"], - ["Africa/Kampala", "Africa/Nairobi"], - ["Africa/Khartoum", "Africa/Harare"], - ["Africa/Kigali", "Africa/Harare"], - ["Africa/Kinshasa", "Africa/Algiers"], - ["Africa/Lagos", "Africa/Algiers"], - ["Africa/Libreville", "Africa/Algiers"], - ["Africa/Lome", "Africa/Monrovia"], - ["Africa/Luanda", "Africa/Algiers"], - ["Africa/Lubumbashi", "Africa/Harare"], - ["Africa/Lusaka", "Africa/Harare"], - ["Africa/Malabo", "Africa/Algiers"], - ["Africa/Maputo", "Africa/Harare"], - ["Africa/Maseru", "Africa/Johannesburg"], - ["Africa/Mbabane", "Africa/Johannesburg"], - ["Africa/Mogadishu", "Africa/Nairobi"], ["Africa/Monrovia", "Africa/Monrovia"], ["Africa/Nairobi", "Africa/Nairobi"], - ["Africa/Ndjamena", "Africa/Algiers"], - ["Africa/Niamey", "Africa/Algiers"], - ["Africa/Nouakchott", "Africa/Monrovia"], - ["Africa/Ouagadougou", "Africa/Monrovia"], - ["Africa/Porto-Novo", "Africa/Algiers"], - ["Africa/Sao_Tome", "Africa/Monrovia"], - ["Africa/Timbuktu", "Africa/Monrovia"], - ["Africa/Tripoli", "Africa/Harare"], - ["Africa/Tunis", "Africa/Algiers"], - ["Africa/Windhoek", "Africa/Harare"], - ["America/Adak", "Pacific/Honolulu"], - ["America/Anchorage", "America/Juneau"], - ["America/Anguilla", "America/Puerto_Rico"], - ["America/Antigua", "America/Puerto_Rico"], - ["America/Araguaina", "America/Sao_Paulo"], ["America/Argentina/Buenos_Aires", "America/Argentina/Buenos_Aires"], ["America/Argentina/Catamarca", "America/Argentina/Buenos_Aires"], - ["America/Argentina/ComodRivadavia", "America/Argentina/Buenos_Aires"], - ["America/Argentina/Cordoba", "America/Argentina/Buenos_Aires"], - ["America/Argentina/Jujuy", "America/Argentina/Buenos_Aires"], - ["America/Argentina/La_Rioja", "America/Argentina/Buenos_Aires"], - ["America/Argentina/Mendoza", "America/Argentina/Buenos_Aires"], - ["America/Argentina/Rio_Gallegos", "America/Argentina/Buenos_Aires"], - ["America/Argentina/Salta", "America/Argentina/Buenos_Aires"], - ["America/Argentina/San_Juan", "America/Argentina/Buenos_Aires"], - ["America/Argentina/San_Luis", "America/Argentina/Buenos_Aires"], - ["America/Argentina/Tucuman", "America/Argentina/Buenos_Aires"], - ["America/Argentina/Ushuaia", "America/Argentina/Buenos_Aires"], - ["America/Aruba", "America/Puerto_Rico"], - ["America/Asuncion", "America/Halifax"], - ["America/Atikokan", "America/Bogota"], - ["America/Atka", "Pacific/Honolulu"], - ["America/Bahia", "America/Sao_Paulo"], - ["America/Bahia_Banderas", "America/Mexico_City"], - ["America/Barbados", "America/Puerto_Rico"], - ["America/Belem", "America/Sao_Paulo"], - ["America/Belize", "America/Mexico_City"], - ["America/Blanc-Sablon", "America/Puerto_Rico"], - ["America/Boa_Vista", "America/Caracas"], - ["America/Bogota", "America/Bogota"], - ["America/Boise", "America/Denver"], - ["America/Buenos_Aires", "America/Argentina/Buenos_Aires"], - ["America/Cambridge_Bay", "America/Denver"], - ["America/Campo_Grande", "America/Caracas"], - ["America/Cancun", "America/Bogota"], - ["America/Caracas", "America/Caracas"], - ["America/Catamarca", "America/Argentina/Buenos_Aires"], - ["America/Cayenne", "America/Sao_Paulo"], - ["America/Cayman", "America/Bogota"], - ["America/Chicago", "America/Chicago"], - ["America/Chihuahua", "America/Chihuahua"], - ["America/Ciudad_Juarez", "America/Denver"], - ["America/Coral_Harbour", "America/Bogota"], - ["America/Cordoba", "America/Argentina/Buenos_Aires"], - ["America/Costa_Rica", "America/Mexico_City"], - ["America/Creston", "America/Phoenix"], - ["America/Cuiaba", "America/Caracas"], - ["America/Curacao", "America/Puerto_Rico"], - ["America/Danmarkshavn", "Etc/Utc"], - ["America/Dawson", "America/Phoenix"], - ["America/Dawson_Creek", "America/Phoenix"], - ["America/Denver", "America/Denver"], - ["America/Detroit", "America/New_York"], - ["America/Dominica", "America/Puerto_Rico"], - ["America/Edmonton", "America/Denver"], - ["America/Eirunepe", "America/Bogota"], - ["America/El_Salvador", "America/Mexico_City"], - ["America/Ensenada", "America/Los_Angeles"], - ["America/Fort_Nelson", "America/Phoenix"], - ["America/Fort_Wayne", "America/New_York"], - ["America/Fortaleza", "America/Sao_Paulo"], - ["America/Glace_Bay", "America/Halifax"], - ["America/Godthab", "America/Godthab"], - ["America/Goose_Bay", "America/Halifax"], - ["America/Grand_Turk", "America/New_York"], - ["America/Grenada", "America/Puerto_Rico"], - ["America/Guadeloupe", "America/Puerto_Rico"], - ["America/Guatemala", "America/Mexico_City"], - ["America/Guayaquil", "America/Bogota"], - ["America/Guyana", "America/Caracas"], - ["America/Halifax", "America/Halifax"], - ["America/Havana", "America/New_York"], - ["America/Hermosillo", "America/Phoenix"], - ["America/Indiana/Indianapolis", "America/Indiana/Indianapolis"], - ["America/Indiana/Knox", "America/Chicago"], - ["America/Indiana/Marengo", "America/Indiana/Indianapolis"], - ["America/Indiana/Petersburg", "America/Indiana/Indianapolis"], - ["America/Indiana/Tell_City", "America/Chicago"], - ["America/Indiana/Vevay", "America/Indiana/Indianapolis"], - ["America/Indiana/Vincennes", "America/Indiana/Indianapolis"], - ["America/Indiana/Winamac", "America/Indiana/Indianapolis"], - ["America/Indianapolis", "America/Indiana/Indianapolis"], - ["America/Inuvik", "America/Denver"], - ["America/Iqaluit", "America/New_York"], - ["America/Jamaica", "America/Bogota"], - ["America/Jujuy", "America/Argentina/Buenos_Aires"], - ["America/Juneau", "America/Juneau"], - ["America/Kentucky/Louisville", "America/New_York"], - ["America/Kentucky/Monticello", "America/New_York"], - ["America/Knox_IN", "America/Chicago"], - ["America/Kralendijk", "America/Puerto_Rico"], - ["America/La_Paz", "America/La_Paz"], - ["America/Lima", "America/Lima"], - ["America/Los_Angeles", "America/Los_Angeles"], - ["America/Louisville", "America/New_York"], - ["America/Lower_Princes", "America/Puerto_Rico"], - ["America/Maceio", "America/Sao_Paulo"], - ["America/Managua", "America/Mexico_City"], - ["America/Manaus", "America/Caracas"], - ["America/Marigot", "America/Puerto_Rico"], - ["America/Martinique", "America/Puerto_Rico"], - ["America/Matamoros", "America/Chicago"], - ["America/Mazatlan", "America/Mazatlan"], - ["America/Mendoza", "America/Argentina/Buenos_Aires"], - ["America/Menominee", "America/Chicago"], - ["America/Merida", "America/Mexico_City"], - ["America/Metlakatla", "America/Juneau"], - ["America/Mexico_City", "America/Mexico_City"], - ["America/Miquelon", "Atlantic/South_Georgia"], - ["America/Moncton", "America/Halifax"], - ["America/Monterrey", "America/Mexico_City"], - ["America/Montevideo", "America/Montevideo"], - ["America/Montreal", "America/New_York"], - ["America/Montserrat", "America/Puerto_Rico"], - ["America/Nassau", "America/New_York"], - ["America/New_York", "America/New_York"], - ["America/Nipigon", "America/New_York"], - ["America/Nome", "America/Juneau"], - ["America/Noronha", "Atlantic/South_Georgia"], - ["America/North_Dakota/Beulah", "America/Chicago"], - ["America/North_Dakota/Center", "America/Chicago"], - ["America/North_Dakota/New_Salem", "America/Chicago"], - ["America/Nuuk", "America/Godthab"], - ["America/Ojinaga", "America/Chicago"], - ["America/Panama", "America/Bogota"], - ["America/Pangnirtung", "America/New_York"], - ["America/Paramaribo", "America/Sao_Paulo"], - ["America/Phoenix", "America/Phoenix"], - ["America/Port-au-Prince", "America/New_York"], - ["America/Port_of_Spain", "America/Puerto_Rico"], - ["America/Porto_Acre", "America/Bogota"], - ["America/Porto_Velho", "America/Caracas"], - ["America/Puerto_Rico", "America/Puerto_Rico"], - ["America/Punta_Arenas", "America/Sao_Paulo"], - ["America/Rainy_River", "America/Chicago"], - ["America/Rankin_Inlet", "America/Chicago"], - ["America/Recife", "America/Sao_Paulo"], - ["America/Regina", "America/Regina"], - ["America/Resolute", "America/Chicago"], - ["America/Rio_Branco", "America/Bogota"], - ["America/Rosario", "America/Argentina/Buenos_Aires"], - ["America/Santa_Isabel", "America/Tijuana"], - ["America/Santarem", "America/Sao_Paulo"], - ["America/Santiago", "America/Santiago"], - ["America/Santo_Domingo", "America/Puerto_Rico"], - ["America/Sao_Paulo", "America/Sao_Paulo"], - ["America/Scoresbysund", "America/Godthab"], - ["America/Shiprock", "America/Denver"], - ["America/Sitka", "America/Juneau"], - ["America/St_Barthelemy", "America/Puerto_Rico"], - ["America/St_Johns", "America/St_Johns"], - ["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/Swift_Current", "America/Regina"], - ["America/Tegucigalpa", "America/Mexico_City"], - ["America/Thule", "America/Halifax"], - ["America/Thunder_Bay", "America/New_York"], - ["America/Tijuana", "America/Tijuana"], - ["America/Toronto", "America/New_York"], - ["America/Tortola", "America/Puerto_Rico"], - ["America/Vancouver", "America/Los_Angeles"], - ["America/Virgin", "America/Puerto_Rico"], - ["America/Whitehorse", "America/Phoenix"], - ["America/Winnipeg", "America/Chicago"], - ["America/Yakutat", "America/Juneau"], - ["America/Yellowknife", "America/Denver"], - ["Antarctica/Casey", "Australia/Perth"], - ["Antarctica/Davis", "Asia/Jakarta"], - ["Antarctica/DumontDUrville", "Pacific/Port_Moresby"], - ["Antarctica/Macquarie", "Australia/Melbourne"], - ["Antarctica/Mawson", "Asia/Karachi"], - ["Antarctica/McMurdo", "Pacific/Auckland"], - ["Antarctica/Palmer", "America/Sao_Paulo"], - ["Antarctica/Rothera", "America/Sao_Paulo"], - ["Antarctica/South_Pole", "Pacific/Auckland"], - ["Antarctica/Syowa", "Asia/Riyadh"], - ["Antarctica/Troll", "Africa/Algiers"], - ["Antarctica/Vostok", "Asia/Karachi"], - ["Arctic/Longyearbyen", "Europe/Berlin"], - ["Asia/Aden", "Asia/Riyadh"], - ["Asia/Almaty", "Asia/Almaty"], - ["Asia/Amman", "Europe/Istanbul"], - ["Asia/Anadyr", "Asia/Kamchatka"], - ["Asia/Aqtau", "Asia/Almaty"], - ["Asia/Aqtobe", "Asia/Almaty"], - ["Asia/Ashgabat", "Asia/Almaty"], - ["Asia/Ashkhabad", "Asia/Almaty"], - ["Asia/Atyrau", "Asia/Almaty"], - ["Asia/Baghdad", "Asia/Baghdad"], - ["Asia/Bahrain", "Asia/Riyadh"], - ["Asia/Baku", "Asia/Baku"], - ["Asia/Bangkok", "Asia/Bangkok"], - ["Asia/Barnaul", "Asia/Novosibirsk"], - ["Asia/Beirut", "Europe/Kiev"], - ["Asia/Bishkek", "Asia/Dhaka"], - ["Asia/Brunei", "Asia/Kuala_Lumpur"], - ["Asia/Calcutta", "Asia/Kolkata"], - ["Asia/Chita", "Asia/Yakutsk"], - ["Asia/Choibalsan", "Asia/Chongqing"], - ["Asia/Chongqing", "Asia/Chongqing"], - ["Asia/Chungking", "Asia/Chongqing"], - ["Asia/Colombo", "Asia/Colombo"], - ["Asia/Dacca", "Asia/Dhaka"], - ["Asia/Damascus", "Europe/Istanbul"], ["Asia/Dhaka", "Asia/Dhaka"], - ["Asia/Dili", "Asia/Tokyo"], - ["Asia/Dubai", "Asia/Yerevan"], - ["Asia/Dushanbe", "Asia/Tashkent"], - ["Asia/Famagusta", "Europe/Athens"], - ["Asia/Gaza", "Asia/Jerusalem"], - ["Asia/Harbin", "Asia/Shanghai"], - ["Asia/Hebron", "Asia/Jerusalem"], - ["Asia/Ho_Chi_Minh", "Asia/Bangkok"], - ["Asia/Hong_Kong", "Asia/Hong_Kong"], - ["Asia/Hovd", "Asia/Bangkok"], - ["Asia/Irkutsk", "Asia/Irkutsk"], - ["Asia/Istanbul", "Europe/Istanbul"], - ["Asia/Jakarta", "Asia/Jakarta"], - ["Asia/Jayapura", "Asia/Tokyo"], - ["Asia/Jerusalem", "Asia/Jerusalem"], - ["Asia/Kabul", "Asia/Kabul"], - ["Asia/Kamchatka", "Asia/Kamchatka"], - ["Asia/Karachi", "Asia/Karachi"], - ["Asia/Kashgar", "Asia/Urumqi"], - ["Asia/Kathmandu", "Asia/Kathmandu"], - ["Asia/Katmandu", "Asia/Kathmandu"], - ["Asia/Khandyga", "Asia/Yakutsk"], - ["Asia/Kolkata", "Asia/Kolkata"], - ["Asia/Krasnoyarsk", "Asia/Krasnoyarsk"], - ["Asia/Kuala_Lumpur", "Asia/Kuala_Lumpur"], - ["Asia/Kuching", "Asia/Kuala_Lumpur"], - ["Asia/Kuwait", "Asia/Riyadh"], - ["Asia/Macao", "Asia/Shanghai"], - ["Asia/Macau", "Asia/Shanghai"], - ["Asia/Magadan", "Asia/Magadan"], - ["Asia/Makassar", "Asia/Kuala_Lumpur"], - ["Asia/Manila", "Asia/Kuala_Lumpur"], - ["Asia/Muscat", "Asia/Yerevan"], - ["Asia/Nicosia", "Europe/Athens"], - ["Asia/Novokuznetsk", "Asia/Novosibirsk"], - ["Asia/Novosibirsk", "Asia/Novosibirsk"], - ["Asia/Omsk", "Asia/Urumqi"], - ["Asia/Oral", "Asia/Tashkent"], - ["Asia/Phnom_Penh", "Asia/Bangkok"], - ["Asia/Pontianak", "Asia/Jakarta"], - ["Asia/Pyongyang", "Asia/Seoul"], - ["Asia/Qatar", "Asia/Riyadh"], - ["Asia/Qostanay", "Asia/Almaty"], - ["Asia/Qyzylorda", "Asia/Almaty"], - ["Asia/Rangoon", "Asia/Rangoon"], - ["Asia/Riyadh", "Asia/Riyadh"], - ["Asia/Saigon", "Asia/Bangkok"], - ["Asia/Sakhalin", "Asia/Srednekolymsk"], - ["Asia/Samarkand", "Asia/Tashkent"], - ["Asia/Seoul", "Asia/Seoul"], - ["Asia/Shanghai", "Asia/Shanghai"], - ["Asia/Singapore", "Asia/Singapore"], - ["Asia/Srednekolymsk", "Asia/Srednekolymsk"], - ["Asia/Taipei", "Asia/Taipei"], - ["Asia/Tashkent", "Asia/Tashkent"], - ["Asia/Tbilisi", "Asia/Tbilisi"], - ["Asia/Tehran", "Asia/Tehran"], - ["Asia/Tel_Aviv", "Asia/Jerusalem"], - ["Asia/Thimbu", "Asia/Dhaka"], - ["Asia/Thimphu", "Asia/Dhaka"], - ["Asia/Tokyo", "Asia/Tokyo"], - ["Asia/Tomsk", "Asia/Novosibirsk"], - ["Asia/Ujung_Pandang", "Asia/Kuala_Lumpur"], - ["Asia/Ulaanbaatar", "Asia/Ulaanbaatar"], - ["Asia/Ulan_Bator", "Asia/Ulaanbaatar"], - ["Asia/Urumqi", "Asia/Urumqi"], - ["Asia/Ust-Nera", "Asia/Vladivostok"], - ["Asia/Vientiane", "Asia/Bangkok"], - ["Asia/Vladivostok", "Asia/Vladivostok"], - ["Asia/Yakutsk", "Asia/Yakutsk"], - ["Asia/Yangon", "Asia/Rangoon"], - ["Asia/Yekaterinburg", "Asia/Yekaterinburg"], - ["Asia/Yerevan", "Asia/Yerevan"], - ["Atlantic/Azores", "Atlantic/Azores"], - ["Atlantic/Bermuda", "America/Halifax"], - ["Atlantic/Canary", "Europe/London"], - ["Atlantic/Cape_Verde", "Atlantic/Cape_Verde"], - ["Atlantic/Faeroe", "Europe/London"], - ["Atlantic/Faroe", "Europe/London"], - ["Atlantic/Jan_Mayen", "Europe/Berlin"], - ["Atlantic/Madeira", "Europe/London"], - ["Atlantic/Reykjavik", "Africa/Monrovia"], - ["Atlantic/South_Georgia", "Atlantic/South_Georgia"], - ["Atlantic/St_Helena", "Africa/Monrovia"], - ["Atlantic/Stanley", "America/Argentina/Buenos_Aires"], - ["Australia/ACT", "Australia/Sydney"], - ["Australia/Adelaide", "Australia/Adelaide"], - ["Australia/Brisbane", "Australia/Brisbane"], - ["Australia/Broken_Hill", "Australia/Adelaide"], - ["Australia/Canberra", "Australia/Canberra"], - ["Australia/Currie", "Australia/Hobart"], - ["Australia/Darwin", "Australia/Darwin"], - ["Australia/Eucla", "Australia/Perth"], - ["Australia/Hobart", "Australia/Hobart"], - ["Australia/LHI", "Pacific/Noumea"], - ["Australia/Lindeman", "Australia/Brisbane"], - ["Australia/Lord_Howe", "Pacific/Noumea"], - ["Australia/Melbourne", "Australia/Melbourne"], - ["Australia/North", "Australia/Darwin"], - ["Australia/NSW", "Australia/Sydney"], - ["Australia/Perth", "Australia/Perth"], - ["Australia/Queensland", "Australia/Brisbane"], - ["Australia/South", "Australia/Adelaide"], - ["Australia/Sydney", "Australia/Sydney"], - ["Australia/Tasmania", "Australia/Hobart"], - ["Australia/Victoria", "Australia/Melbourne"], - ["Australia/West", "Australia/Perth"], - ["Australia/Yancowinna", "Australia/Adelaide"], - ["Brazil/Acre", "America/Bogota"], - ["Brazil/DeNoronha", "Atlantic/South_Georgia"], - ["Brazil/East", "America/Sao_Paulo"], - ["Brazil/West", "America/Caracas"], - ["Canada/Atlantic", "America/Halifax"], - ["Canada/Central", "America/Chicago"], - ["Canada/Eastern", "America/New_York"], - ["Canada/Mountain", "America/Denver"], - ["Canada/Newfoundland", "America/St_Johns"], - ["Canada/Pacific", "America/Los_Angeles"], - ["Canada/Saskatchewan", "America/Regina"], - ["Canada/Yukon", "America/Phoenix"], - ["CET", "Europe/Paris"], - ["Chile/Continental", "America/Santiago"], - ["Chile/EasterIsland", "America/Chicago"], - ["CST6CDT", "America/Chicago"], - ["Cuba", "America/New_York"], - ["EET", "Europe/Sofia"], - ["Egypt", "Africa/Cairo"], - ["Eire", "Europe/Dublin"], - ["EST", "America/Bogota"], - ["EST5EDT", "America/New_York"], - ["Etc/GMT", "Etc/UTC"], - ["Etc/GMT+0", "Etc/UTC"], - ["Etc/GMT+1", "Atlantic/Cape_Verde"], - ["Etc/GMT+10", "Pacific/Honolulu"], - ["Etc/GMT+11", "Pacific/Midway"], - ["Etc/GMT+12", "Etc/GMT+12"], - ["Etc/GMT+2", "Atlantic/South_Georgia"], - ["Etc/GMT+3", "America/Sao_Paulo"], - ["Etc/GMT+4", "America/Caracas"], - ["Etc/GMT+5", "America/Bogota"], - ["Etc/GMT+6", "America/Mexico_City"], - ["Etc/GMT+7", "America/Phoenix"], - ["Etc/GMT+8", "America/Juneau"], - ["Etc/GMT+9", "America/Juneau"], - ["Etc/GMT-0", "Etc/UTC"], - ["Etc/GMT-1", "Africa/Algiers"], - ["Etc/GMT-10", "Pacific/Port_Moresby"], - ["Etc/GMT-11", "Asia/Magadan"], - ["Etc/GMT-12", "Pacific/Fiji"], - ["Etc/GMT-13", "Pacific/Tongatapu"], - ["Etc/GMT-14", "Pacific/Apia"], - ["Etc/GMT-2", "Africa/Harare"], - ["Etc/GMT-3", "Africa/Nairobi"], - ["Etc/GMT-4", "Asia/Baku"], - ["Etc/GMT-5", "Asia/Almaty"], - ["Etc/GMT-6", "Asia/Dhaka"], - ["Etc/GMT-7", "Asia/Bangkok"], - ["Etc/GMT-8", "Asia/Chongqing"], - ["Etc/GMT-9", "Asia/Yakutsk"], - ["Etc/GMT0", "Etc/UTC"], - ["Etc/Greenwich", "Etc/UTC"], - ["Etc/UCT", "Etc/UTC"], - ["Etc/Universal", "Etc/UTC"], ["Etc/UTC", "Etc/UTC"], ["Etc/Zulu", "Etc/UTC"], - ["Europe/Amsterdam", "Europe/Brussels"], - ["Europe/Andorra", "Europe/Brussels"], - ["Europe/Astrakhan", "Asia/Yerevan"], - ["Europe/Athens", "Europe/Athens"], - ["Europe/Belfast", "Europe/London"], - ["Europe/Belgrade", "Europe/Belgrade"], - ["Europe/Berlin", "Europe/Berlin"], - ["Europe/Bratislava", "Europe/Bratislava"], - ["Europe/Brussels", "Europe/Brussels"], - ["Europe/Bucharest", "Europe/Bucharest"], - ["Europe/Budapest", "Europe/Budapest"], - ["Europe/Busingen", "Europe/Zurich"], - ["Europe/Chisinau", "Europe/Bucharest"], - ["Europe/Copenhagen", "Europe/Copenhagen"], - ["Europe/Dublin", "Europe/Dublin"], - ["Europe/Gibraltar", "Europe/Madrid"], - ["Europe/Guernsey", "Europe/London"], - ["Europe/Helsinki", "Europe/Helsinki"], - ["Europe/Isle_of_Man", "Europe/London"], - ["Europe/Istanbul", "Europe/Istanbul"], - ["Europe/Jersey", "Europe/London"], - ["Europe/Kaliningrad", "Europe/Kaliningrad"], - ["Europe/Kiev", "Europe/Kiev"], - ["Europe/Kirov", "Europe/Moscow"], - ["Europe/Kyiv", "Europe/Kiev"], - ["Europe/Lisbon", "Europe/Lisbon"], - ["Europe/Ljubljana", "Europe/Belgrade"], - ["Europe/London", "Europe/London"], - ["Europe/Luxembourg", "Europe/Brussels"], - ["Europe/Madrid", "Europe/Madrid"], - ["Europe/Malta", "Europe/Rome"], - ["Europe/Mariehamn", "Europe/Helsinki"], - ["Europe/Minsk", "Europe/Minsk"], - ["Europe/Monaco", "Europe/Paris"], - ["Europe/Moscow", "Europe/Moscow"], - ["Europe/Nicosia", "Europe/Athens"], - ["Europe/Oslo", "Europe/Berlin"], - ["Europe/Paris", "Europe/Paris"], - ["Europe/Podgorica", "Europe/Belgrade"], - ["Europe/Prague", "Europe/Prague"], - ["Europe/Riga", "Europe/Riga"], - ["Europe/Rome", "Europe/Rome"], - ["Europe/Samara", "Europe/Samara"], - ["Europe/San_Marino", "Europe/Rome"], - ["Europe/Sarajevo", "Europe/Belgrade"], - ["Europe/Saratov", "Asia/Yerevan"], - ["Europe/Simferopol", "Europe/Moscow"], - ["Europe/Skopje", "Europe/Belgrade"], - ["Europe/Sofia", "Europe/Sofia"], - ["Europe/Stockholm", "Europe/Stockholm"], - ["Europe/Tallinn", "Europe/Tallinn"], - ["Europe/Tirane", "Europe/Belgrade"], - ["Europe/Tiraspol", "Europe/Bucharest"], - ["Europe/Ulyanovsk", "Asia/Yerevan"], - ["Europe/Uzhgorod", "Europe/Kiev"], - ["Europe/Vaduz", "Europe/Zurich"], - ["Europe/Vatican", "Europe/Rome"], - ["Europe/Vienna", "Europe/Vienna"], - ["Europe/Vilnius", "Europe/Vilnius"], - ["Europe/Volgograd", "Europe/Volgograd"], - ["Europe/Warsaw", "Europe/Warsaw"], - ["Europe/Zagreb", "Europe/Belgrade"], - ["Europe/Zaporozhye", "Europe/Kiev"], - ["Europe/Zurich", "Europe/Zurich"], - ["Factory", "Etc/UTC"], - ["GB", "Europe/London"], - ["GB-Eire", "Europe/London"], - ["GMT", "Etc/UTC"], - ["GMT+0", "Etc/UTC"], - ["GMT-0", "Etc/UTC"], - ["GMT0", "Etc/UTC"], - ["Greenwich", "Etc/UTC"], - ["Hongkong", "Asia/Hong_Kong"], - ["HST", "Pacific/Honolulu"], - ["Iceland", "Africa/Monrovia"], - ["Indian/Antananarivo", "Africa/Nairobi"], - ["Indian/Chagos", "Asia/Dhaka"], - ["Indian/Christmas", "Asia/Bangkok"], - ["Indian/Cocos", "Asia/Rangoon"], - ["Indian/Comoro", "Africa/Nairobi"], - ["Indian/Kerguelen", "Asia/Karachi"], - ["Indian/Mahe", "Asia/Yerevan"], - ["Indian/Maldives", "Asia/Karachi"], - ["Indian/Mauritius", "Asia/Yerevan"], - ["Indian/Mayotte", "Africa/Nairobi"], - ["Indian/Reunion", "Asia/Yerevan"], - ["Iran", "Asia/Tehran"], - ["Israel", "Asia/Jerusalem"], - ["Jamaica", "America/Bogota"], - ["Japan", "Asia/Tokyo"], - ["Kwajalein", "Pacific/Majuro"], - ["Libya", "Africa/Harare"], - ["MET", "Europe/Paris"], - ["Mexico/BajaNorte", "America/Tijuana"], - ["Mexico/BajaSur", "America/Mazatlan"], - ["Mexico/General", "America/Mexico_City"], - ["MST", "America/Phoenix"], - ["MST7MDT", "America/Denver"], - ["Navajo", "America/Denver"], - ["NZ", "Pacific/Auckland"], - ["NZ-CHAT", "Pacific/Chatham"], - ["Pacific/Apia", "Pacific/Apia"], - ["Pacific/Auckland", "Pacific/Auckland"], - ["Pacific/Bougainville", "Pacific/Noumea"], - ["Pacific/Chatham", "Pacific/Chatham"], - ["Pacific/Chuuk", "Pacific/Port_Moresby"], - ["Pacific/Easter", "America/Chicago"], - ["Pacific/Efate", "Pacific/Noumea"], - ["Pacific/Enderbury", "Pacific/Tongatapu"], - ["Pacific/Fakaofo", "Pacific/Fakaofo"], - ["Pacific/Fiji", "Pacific/Fiji"], - ["Pacific/Funafuti", "Pacific/Majuro"], - ["Pacific/Galapagos", "America/Mexico_City"], - ["Pacific/Gambier", "Pacific/Honolulu"], - ["Pacific/Guadalcanal", "Pacific/Noumea"], - ["Pacific/Guam", "Pacific/Guam"], - ["Pacific/Honolulu", "Pacific/Honolulu"], - ["Pacific/Johnston", "Pacific/Honolulu"], - ["Pacific/Kanton", "Pacific/Tongatapu"], - ["Pacific/Kiritimati", "Pacific/Apia"], - ["Pacific/Kosrae", "Pacific/Noumea"], - ["Pacific/Kwajalein", "Pacific/Majuro"], - ["Pacific/Majuro", "Pacific/Majuro"], - ["Pacific/Marquesas", "Pacific/Honolulu"], - ["Pacific/Midway", "Pacific/Midway"], - ["Pacific/Nauru", "Pacific/Majuro"], - ["Pacific/Niue", "Pacific/Midway"], - ["Pacific/Norfolk", "Pacific/Noumea"], - ["Pacific/Noumea", "Pacific/Noumea"], - ["Pacific/Pago_Pago", "Pacific/Pago_Pago"], - ["Pacific/Palau", "Asia/Yakutsk"], - ["Pacific/Pitcairn", "America/Juneau"], - ["Pacific/Pohnpei", "Pacific/Noumea"], - ["Pacific/Ponape", "Pacific/Noumea"], - ["Pacific/Port_Moresby", "Pacific/Port_Moresby"], - ["Pacific/Rarotonga", "Pacific/Honolulu"], - ["Pacific/Saipan", "Pacific/Guam"], - ["Pacific/Samoa", "Pacific/Pago_Pago"], - ["Pacific/Tahiti", "Pacific/Honolulu"], - ["Pacific/Tarawa", "Pacific/Majuro"], - ["Pacific/Tongatapu", "Pacific/Tongatapu"], - ["Pacific/Truk", "Pacific/Port_Moresby"], - ["Pacific/Wake", "Pacific/Majuro"], - ["Pacific/Wallis", "Pacific/Majuro"], - ["Pacific/Yap", "Pacific/Port_Moresby"], - ["Poland", "Europe/Warsaw"], - ["Portugal", "Europe/Lisbon"], - ["PRC", "Asia/Shanghai"], - ["PST8PDT", "America/Los_Angeles"], - ["ROC", "Asia/Taipei"], - ["ROK", "Asia/Seoul"], - ["Singapore", "Asia/Singapore"], - ["Turkey", "Europe/Istanbul"], - ["UCT", "Etc/UTC"], - ["Universal", "Etc/UTC"], - ["US/Alaska", "America/Juneau"], - ["US/Aleutian", "Pacific/Honolulu"], - ["US/Arizona", "America/Phoenix"], - ["US/Central", "America/Chicago"], - ["US/East-Indiana", "America/Indiana/Indianapolis"], - ["US/Eastern", "America/New_York"], - ["US/Hawaii", "Pacific/Honolulu"], - ["US/Indiana-Starke", "America/Indiana/Indianapolis"], - ["US/Michigan", "America/New_York"], - ["US/Mountain", "America/Denver"], - ["US/Pacific", "America/Los_Angeles"], - ["US/Samoa", "Pacific/Pago_Pago"], - ["UTC", "Etc/UTC"], - ["W-SU", "Europe/Moscow"], - ["WET", "Europe/London"], - ["Zulu", "Etc/UTC"], ] end end diff --git a/test/worldwide/time_zone_data_consistency_test.rb b/test/worldwide/time_zone_data_consistency_test.rb new file mode 100644 index 000000000..0ab7eb2d3 --- /dev/null +++ b/test/worldwide/time_zone_data_consistency_test.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +require "test_helper" + +# Miscellaneous assertions about our files in data/other/timezones/??.yml +# and the iana_to_rails_time_zone.yml file. +# This is intended to catch errors introduced when editing those files. + +module Worldwide + class TimeZoneDataConsistencyTest < ActiveSupport::TestCase + setup do + @raw_yml = Dir["#{Worldwide::Paths::TIME_ZONE_ROOT}/*.yml"].map do |filename| + YAML.safe_load_file(filename).freeze + end + end + + test "every timezone file has the expected top-level keys" do + @raw_yml.each do |file| + locale = file.keys.first + + assert_equal "timezones", file[locale].keys.first + end + end + + test "each timezone key corresponds to a rails tz identifier" do + rails_timezones = ActiveSupport::TimeZone.all.map { |tz| ActiveSupport::TimeZone.find_tzinfo(tz.name).name } + @raw_yml.each do |file| + file.each do |_locale, data| + data["timezones"].each do |tz_name, _translation| + assert_includes rails_timezones, iana_timezones[tz_name], "#{tz_name} timezone is not supported by Rails" + end + end + end + end + + test "iana_to_rails_time_zone keys map to an equivalent value when supported by rails" do + rails_timezones = ActiveSupport::TimeZone.all.map { |tz| ActiveSupport::TimeZone.find_tzinfo(tz.name).name } + + iana_timezones.each do |iana_tz, rails_tz| + if rails_timezones.include?(iana_tz) + assert_equal iana_tz, rails_tz + end + end + end + + test "iana_to_rails_time_zone values are supported by rails" do + rails_timezones = ActiveSupport::TimeZone.all.map { |tz| ActiveSupport::TimeZone.find_tzinfo(tz.name).name } + + iana_timezones.each do |_iana_tz, rails_tz| + assert_includes rails_timezones, rails_tz, "#{rails_tz} timezone is not supported by Rails" + end + end + + def iana_timezones + @iana_timezones ||= YAML.safe_load_file("#{Worldwide::Paths::DB_DATA_ROOT}/iana_to_rails_time_zone.yml") + end + end +end