merged 2.0
This commit is contained in:
commit
df1050fa32
@ -17,7 +17,7 @@
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.3.3",
|
||||
"swiftmailer/swiftmailer": ">=4.1.2,<4.2-dev"
|
||||
"swiftmailer/swiftmailer": ">=4.1.2,<4.3-dev"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/http-kernel": "self.version"
|
||||
|
@ -458,7 +458,12 @@ class StubIntlDateFormatter
|
||||
public function setTimeZoneId($timeZoneId)
|
||||
{
|
||||
if (null === $timeZoneId) {
|
||||
$timeZoneId = date_default_timezone_get();
|
||||
// TODO: changes were made to ext/intl in PHP 5.4.4 release that need to be investigated since it will
|
||||
// use ini's date.timezone when the time zone is not provided. As a not well tested workaround, uses UTC.
|
||||
// See the first two items of the commit message for more information:
|
||||
// https://github.com/php/php-src/commit/eb346ef0f419b90739aadfb6cc7b7436c5b521d9
|
||||
$timeZoneId = getenv('TZ') ?: 'UTC';
|
||||
|
||||
$this->unitializedTimeZoneId = true;
|
||||
}
|
||||
|
||||
|
@ -461,6 +461,7 @@ class StubIntlDateFormatterTest extends LocaleTestCase
|
||||
{
|
||||
$this->skipIfIntlExtensionIsNotLoaded();
|
||||
$this->skipIfICUVersionIsTooOld();
|
||||
|
||||
$formatter = new \IntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT);
|
||||
$formatter->setPattern('yyyy-MM-dd HH:mm:ss');
|
||||
|
||||
@ -470,6 +471,54 @@ class StubIntlDateFormatterTest extends LocaleTestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function testFormatWithDefaultTimezoneStubShouldUseTheTzEnvironmentVariableWhenAvailable()
|
||||
{
|
||||
$tz = getenv('TZ');
|
||||
putenv('TZ=Europe/London');
|
||||
|
||||
$formatter = new StubIntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT);
|
||||
$formatter->setPattern('yyyy-MM-dd HH:mm:ss');
|
||||
|
||||
$this->assertEquals(
|
||||
$this->createDateTime(0)->format('Y-m-d H:i:s'),
|
||||
$formatter->format(0)
|
||||
);
|
||||
|
||||
$this->assertEquals('Europe/London', getenv('TZ'));
|
||||
|
||||
// Restores TZ.
|
||||
putenv('TZ='.$tz);
|
||||
}
|
||||
|
||||
/**
|
||||
* It seems IntlDateFormatter caches the timezone id when not explicitely set via constructor or by the
|
||||
* setTimeZoneId() method. Since testFormatWithDefaultTimezoneIntl() runs using the default environment
|
||||
* time zone, this test would use it too if not running in a separated process.
|
||||
*
|
||||
* @runInSeparateProcess
|
||||
*/
|
||||
public function testFormatWithDefaultTimezoneIntlShouldUseTheTzEnvironmentVariableWhenAvailable()
|
||||
{
|
||||
$this->skipIfIntlExtensionIsNotLoaded();
|
||||
$this->skipIfICUVersionIsTooOld();
|
||||
|
||||
$tz = getenv('TZ');
|
||||
putenv('TZ=Europe/Paris');
|
||||
|
||||
$formatter = new \IntlDateFormatter('en', StubIntlDateFormatter::MEDIUM, StubIntlDateFormatter::SHORT);
|
||||
$formatter->setPattern('yyyy-MM-dd HH:mm:ss');
|
||||
|
||||
$this->assertEquals('Europe/Paris', getenv('TZ'));
|
||||
|
||||
$this->assertEquals(
|
||||
$this->createDateTime(0)->format('Y-m-d H:i:s'),
|
||||
$formatter->format(0)
|
||||
);
|
||||
|
||||
// Restores TZ.
|
||||
putenv('TZ='.$tz);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Symfony\Component\Locale\Exception\NotImplementedException
|
||||
*/
|
||||
@ -992,11 +1041,13 @@ class StubIntlDateFormatterTest extends LocaleTestCase
|
||||
return new \IntlDateFormatter('en', \IntlDateFormatter::MEDIUM, \IntlDateFormatter::SHORT, 'UTC', \IntlDateFormatter::GREGORIAN, $pattern);
|
||||
}
|
||||
|
||||
protected function createDateTime($timestamp = null, $timeZone = null)
|
||||
protected function createDateTime($timestamp = null)
|
||||
{
|
||||
$timeZone = getenv('TZ') ?: 'UTC';
|
||||
|
||||
$dateTime = new \DateTime();
|
||||
$dateTime->setTimestamp(null === $timestamp ? time() : $timestamp);
|
||||
$dateTime->setTimeZone(new \DateTimeZone(null === $timeZone ? date_default_timezone_get() : $timeZone));
|
||||
$dateTime->setTimeZone(new \DateTimeZone($timeZone));
|
||||
|
||||
return $dateTime;
|
||||
}
|
||||
|
Reference in New Issue
Block a user