From fc3d2895722f452755e9f35d1e91a28e04814c76 Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Wed, 22 Mar 2017 09:44:41 +0000 Subject: [PATCH] Issue #2860663 by mpdonadio, xjm, Mile23: UserTimeZoneTest fails on PHP 7.0.x-dev and 7.1.x-dev --- .../user/src/Tests/UserTimeZoneTest.php | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/core/modules/user/src/Tests/UserTimeZoneTest.php b/core/modules/user/src/Tests/UserTimeZoneTest.php index 165c23c188e..396add4c05b 100644 --- a/core/modules/user/src/Tests/UserTimeZoneTest.php +++ b/core/modules/user/src/Tests/UserTimeZoneTest.php @@ -28,8 +28,15 @@ class UserTimeZoneTest extends WebTestBase { ->set('timezone.user.configurable', 1) ->set('timezone.default', 'America/Los_Angeles') ->save(); + + // Load the 'medium' date format, which is the default for node creation + // time, and override it. Since we are testing time zones with Daylight + // Saving Time, and need to future proof against changes to the zoneinfo + // database, we choose the 'I' format placeholder instead of a + // human-readable zone name. With 'I', a 1 means the date is in DST, and 0 + // if not. DateFormat::load('medium') - ->setPattern('Y-m-d H:i T') + ->setPattern('Y-m-d H:i I') ->save(); // Create a user account and login. @@ -49,11 +56,11 @@ class UserTimeZoneTest extends WebTestBase { // Confirm date format and time zone. $this->drupalGet('node/' . $node1->id()); - $this->assertText('2007-03-09 21:00 PST', 'Date should be PST.'); + $this->assertText('2007-03-09 21:00 0', 'Date should be PST.'); $this->drupalGet('node/' . $node2->id()); - $this->assertText('2007-03-11 01:00 PST', 'Date should be PST.'); + $this->assertText('2007-03-11 01:00 0', 'Date should be PST.'); $this->drupalGet('node/' . $node3->id()); - $this->assertText('2007-03-20 21:00 PDT', 'Date should be PDT.'); + $this->assertText('2007-03-20 21:00 1', 'Date should be PDT.'); // Change user time zone to Santiago time. $edit = []; @@ -64,25 +71,25 @@ class UserTimeZoneTest extends WebTestBase { // Confirm date format and time zone. $this->drupalGet('node/' . $node1->id()); - $this->assertText('2007-03-10 02:00 CLST', 'Date should be Chile summer time; five hours ahead of PST.'); + $this->assertText('2007-03-10 02:00 1', 'Date should be Chile summer time; five hours ahead of PST.'); $this->drupalGet('node/' . $node2->id()); - $this->assertText('2007-03-11 05:00 CLT', 'Date should be Chile time; four hours ahead of PST'); + $this->assertText('2007-03-11 05:00 0', 'Date should be Chile time; four hours ahead of PST'); $this->drupalGet('node/' . $node3->id()); - $this->assertText('2007-03-21 00:00 CLT', 'Date should be Chile time; three hours ahead of PDT.'); + $this->assertText('2007-03-21 00:00 0', 'Date should be Chile time; three hours ahead of PDT.'); // Ensure that anonymous users also use the default timezone. $this->drupalLogout(); $this->drupalGet('node/' . $node1->id()); - $this->assertText('2007-03-09 21:00 PST', 'Date should be PST.'); + $this->assertText('2007-03-09 21:00 0', 'Date should be PST.'); $this->drupalGet('node/' . $node2->id()); - $this->assertText('2007-03-11 01:00 PST', 'Date should be PST.'); + $this->assertText('2007-03-11 01:00 0', 'Date should be PST.'); $this->drupalGet('node/' . $node3->id()); - $this->assertText('2007-03-20 21:00 PDT', 'Date should be PDT.'); + $this->assertText('2007-03-20 21:00 1', 'Date should be PDT.'); // Format a date without accessing the current user at all and // ensure that it uses the default timezone. $this->drupalGet('/system-test/date'); - $this->assertText('2016-01-13 08:29 PST', 'Date should be PST.'); + $this->assertText('2016-01-13 08:29 0', 'Date should be PST.'); } }