Skip to content

Commit

Permalink
MDL-76675 date: Only test all TZ names with PHPUNIT_LONGTEST enabled
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
stronk7 committed Jan 27, 2023
1 parent cdcfb84 commit 4c64f49
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion lib/tests/date_test.php
Expand Up @@ -166,7 +166,18 @@ public function test_php_gmt_offsets() {
}
}

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) {
Expand All @@ -183,6 +194,12 @@ public function test_get_localised_timezone() {
$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);

Expand Down

0 comments on commit 4c64f49

Please sign in to comment.