MDL-76675 date: Only test all TZ names with PHPUNIT_LONGTEST enabled

It happens often that some timezone is renamed, split, added to the
IANAs list of timezones (that, for PHP is kept updated by the
php-timezonedb PECL extension).

When the information coming from the extension changes, all the
PHPUnit jobs in the world start failing (that's when CIs update
their PHP images, when devs update their packages, ...).

So, what we are doing here is to move that test that check for
every single string existing to be run only when PHPUNIT_LONGTEST
is enabled. That way only places running all tests will run that
one. And every other run just will skip it.

This corresponds to point 1 & 2 of the issue, lower impact in general
and, still be able to enable the tests to run.
This commit is contained in:
Eloy Lafuente (stronk7) 2023-01-25 12:24:07 +01:00
parent 67bbf6c416
commit 8b31b8e8d0

View File

@ -177,7 +177,18 @@ class date_test extends advanced_testcase {
}
}
public function test_timezone_lang_strings() {
/**
* We are only checking lang strings existence here, not code.
*
* @coversNothing
*/
public function test_timezone_all_lang_strings() {
// We only run this test when PHPUNIT_LONGTEST is enabled, test_get_localised_timezone()
// is already checking the names of a few, hopefully stable enough to be run always.
if (!PHPUNIT_LONGTEST) {
$this->markTestSkipped('PHPUNIT_LONGTEST is not defined');
}
$phpzones = DateTimeZone::listIdentifiers();
$manager = get_string_manager();
foreach ($phpzones as $tz) {
@ -197,6 +208,12 @@ class date_test extends advanced_testcase {
$result = core_date::get_localised_timezone('Pacific/Auckland');
$this->assertSame('Pacific/Auckland', $result);
$result = core_date::get_localised_timezone('Europe/Madrid');
$this->assertSame('Europe/Madrid', $result);
$result = core_date::get_localised_timezone('America/New_York');
$this->assertSame('America/New_York', $result);
$result = core_date::get_localised_timezone('99');
$this->assertSame('Server timezone (Pacific/Auckland)', $result);