8000 minor #45859 [HttpKernel] Fix timezone influenced tests (GromNaN) · symfony/symfony@26c1d4b · GitHub
[go: up one dir, main page]

Skip to content

Commit 26c1d4b

Browse files
committed
minor #45859 [HttpKernel] Fix timezone influenced tests (GromNaN)
This PR was merged into the 6.1 branch. Discussion ---------- [HttpKernel] Fix timezone influenced tests | Q | A | ------------- | --- | Branch? | 6.1 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | #45589 (comment) | License | MIT | Doc PR | - `DateTimeValueResolverTest` fails depending on the default timezone and the current time. The culprit is the combinaison of `strtotime` + `new DateTime`. https://github.com/symfony/symfony/blob/24304ad77874f03f9971fd9e29c0ef0776b0f5b9/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/DateTimeValueResolver.php#L67-L69 ``` There were 3 failures: 1) Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver\DateTimeValueResolverTest::testFullDate Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'2012-07-21' +'2012-07-20' /home/runner/work/symfony/symfony/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/DateTimeValueResolverTest.php:53 2) Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver\DateTimeValueResolverTest::testCustomClass Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'2016-09-08' +'2016-09-07' /home/runner/work/symfony/symfony/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/DateTimeValueResolverTest.php:100 3) Symfony\Component\HttpKernel\Tests\Controller\ArgumentResolver\DateTimeValueResolverTest::testDateTimeImmutable Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'2016-09-08' +'2016-09-07' /home/runner/work/symfony/symfony/src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/DateTimeValueResolverTest.php:116 ``` Commits ------- 9a0e99c Fix timezone influenced tests
2 parents 24304ad + 9a0e99c commit 26c1d4b

File tree

1 file changed

+37
-5
lines changed

1 file changed

+37
-5
lines changed

src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/DateTimeValueResolverTest.php

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,25 @@
2020

2121
class DateTimeValueResolverTest extends TestCase
2222
{
23+
private $defaultTimezone;
24+
25+
protected function setUp(): void
26+
{
27+
$this->defaultTimezone = date_default_timezone_get();
28+
}
29+
30+
protected function tearDown(): void
31+
{
32+
date_default_timezone_set($this->defaultTimezone);
33+
}
34+
35+
public function getTimeZones()
36+
{
37+
yield ['UTC'];
38+
yield ['Etc/GMT+9'];
39+
yield ['Etc/GMT-14'];
40+
}
41+
2342
public function testSupports()
2443
{
2544
$resolver = new DateTimeValueResolver();
@@ -37,12 +56,16 @@ public function testSupports()
3756
$this->assertFalse($resolver->supports($request, $argument));
3857
}
3958

40-
public function testFullDate()
59+
/**
60+
* @dataProvider getTimeZones
61+
*/
62+
public function testFullDate(string $timezone)
4163
{
64+
date_default_timezone_set($timezone);
4265
$resolver = new DateTimeValueResolver();
4366

4467
$argument = new ArgumentMetadata('dummy', \DateTime::class, false, false, null);
45-
$request = self::requestWithAttributes(['dummy' => '2012-07-21 00:00:00']);
68+
$request = self::requestWithAttributes(['dummy' => '2012-07-21 00:00:00+0000']);
4669

4770
/** @var \Generator $results */
4871
$results = $resolver->resolve($request, $argument);
@@ -53,8 +76,12 @@ public function testFullDate()
5376
$this->assertEquals('2012-07-21', $results[0]->format('Y-m-d'));
5477
}
5578

56-
public function testUnixTimestamp()
79+
/**
80+
* @dataProvider getTimeZones
81+
*/
82+
public function testUnixTimestamp(string $timezone)
5783
{
84+
date_default_timezone_set($timezone);
5885
$resolver = new DateTimeValueResolver();
5986

6087
$argument = new ArgumentMetadata('dummy', \DateTime::class, false, false, null);
@@ -86,6 +113,7 @@ public function testNullableWithEmptyAttribute()
86113

87114
public function testCustomClass()
88115
{
116+
date_default_timezone_set('UTC');
89117
$resolver = new DateTimeValueResolver();
90118

91119
$argument = new ArgumentMetadata('dummy', FooDateTime::class, false, false, null);
@@ -100,12 +128,16 @@ public function testCustomClass()
100128
$this->assertEquals('2016-09-08', $results[0]->format('Y-m-d'));
101129
}
102130

103-
public function testDateTimeImmutable()
131+
/**
132+
* @dataProvider getTimeZones
133+
*/
134+
public function testDateTimeImmutable(string $timezone)
104135
{
136+
date_default_timezone_set($timezone);
105137
$resolver = new DateTimeValueResolver();
106138

107139
$argument = new ArgumentMetadata('dummy', \DateTimeImmutable::class, false, false, null);
108-
$request = self::requestWithAttributes(['dummy' => '2016-09-08 00:00:00']);
140+
$request = self::requestWithAttributes(['dummy' => '2016-09-08 00:00:00+0000']);
109141

110142
/** @var \Generator $results */
111143
$results = $resolver->resolve($request, $argument);

0 commit comments

Comments
 (0)
0