Skip to content

Commit b27c999

Browse files
bug #32981 Fix tests/code for php 7.4 (jderusse)
This PR was merged into the 3.4 branch. Discussion ---------- Fix tests/code for php 7.4 | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #32844 | License | MIT | Doc PR | NA Fix remaining tests and deprecation Commits ------- 05ec8a0 Fix remaining tests
2 parents c88d125 + 05ec8a0 commit b27c999

File tree

23 files changed

+166
-23
lines changed

23 files changed

+166
-23
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode)
264264
->canBeEnabled()
265265
->beforeNormalization()
266266
->always(function ($v) {
267-
if (true === $v['enabled']) {
267+
if (\is_array($v) && true === $v['enabled']) {
268268
$workflows = $v;
269269
unset($workflows['enabled']);
270270

src/Symfony/Component/Config/Util/XmlUtils.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ public static function phpize($value)
234234
return true;
235235
case 'false' === $lowercaseValue:
236236
return false;
237-
case isset($value[1]) && '0b' == $value[0].$value[1]:
237+
case isset($value[1]) && '0b' == $value[0].$value[1] && preg_match('/^0b[01]*$/', $value):
238238
return bindec($value);
239239
case is_numeric($value):
240240
return '0x' === $value[0].$value[1] ? hexdec($value) : (float) $value;

src/Symfony/Component/Debug/ErrorHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ public function handleError($type, $message, $file, $line)
470470
}
471471

472472
if ($throw) {
473-
if (E_USER_ERROR & $type) {
473+
if (\PHP_VERSION_ID < 70400 && E_USER_ERROR & $type) {
474474
for ($i = 1; isset($backtrace[$i]); ++$i) {
475475
if (isset($backtrace[$i]['function'], $backtrace[$i]['type'], $backtrace[$i - 1]['function'])
476476
&& '__toString' === $backtrace[$i]['function']

src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,10 @@ public function testHandleError()
283283

284284
public function testHandleUserError()
285285
{
286+
if (\PHP_VERSION_ID >= 70400) {
287+
$this->markTestSkipped('PHP 7.4 allows __toString to throw exceptions');
288+
}
289+
286290
try {
287291
$handler = ErrorHandler::register();
288292
$handler->throwAt(0, true);

src/Symfony/Component/DomCrawler/FormFieldRegistry.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public function remove($name)
5757
$target = &$this->fields;
5858
while (\count($segments) > 1) {
5959
$path = array_shift($segments);
60-
if (!\array_key_exists($path, $target)) {
60+
if (!\is_array($target) || !\array_key_exists($path, $target)) {
6161
return;
6262
}
6363
$target = &$target[$path];
@@ -80,7 +80,7 @@ public function &get($name)
8080
$target = &$this->fields;
8181
while ($segments) {
8282
$path = array_shift($segments);
83-
if (!\array_key_exists($path, $target)) {
83+
if (!\is_array($target) || !\array_key_exists($path, $target)) {
8484
throw new \InvalidArgumentException(sprintf('Unreachable field "%s"', $path));
8585
}
8686
$target = &$target[$path];

src/Symfony/Component/Finder/Tests/Iterator/SortableIteratorTest.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@ public function testAccept($mode, $expected)
3333
if (!\is_callable($mode)) {
3434
switch ($mode) {
3535
case SortableIterator::SORT_BY_ACCESSED_TIME:
36-
if ('\\' === \DIRECTORY_SEPARATOR) {
37-
touch(self::toAbsolute('.git'));
38-
} else {
39-
file_get_contents(self::toAbsolute('.git'));
40-
}
36+
touch(self::toAbsolute('.git'));
4137
sleep(1);
4238
file_get_contents(self::toAbsolute('.bar'));
4339
break;

src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,7 @@ public function testYearsOption()
471471

472472
public function testMonthsOption()
473473
{
474+
\Locale::setDefault('en');
474475
$form = $this->factory->create(static::TESTED_TYPE, null, [
475476
'months' => [6, 7],
476477
'format' => \IntlDateFormatter::SHORT,
@@ -479,8 +480,8 @@ public function testMonthsOption()
479480
$view = $form->createView();
480481

481482
$this->assertEquals([
482-
new ChoiceView(6, '6', '06'),
483-
new ChoiceView(7, '7', '07'),
483+
new ChoiceView(6, '6', '6'),
484+
new ChoiceView(7, '7', '7'),
484485
], $view['month']->vars['choices']);
485486
}
486487

@@ -544,14 +545,15 @@ public function testMonthsOptionLongFormatWithDifferentTimezone()
544545

545546
public function testIsDayWithinRangeReturnsTrueIfWithin()
546547
{
548+
\Locale::setDefault('en');
547549
$view = $this->factory->create(static::TESTED_TYPE, null, [
548550
'days' => [6, 7],
549551
])
550552
->createView();
551553

552554
$this->assertEquals([
553-
new ChoiceView(6, '6', '06'),
554-
new ChoiceView(7, '7', '07'),
555+
new ChoiceView(6, '6', '6'),
556+
new ChoiceView(7, '7', '7'),
555557
], $view['day']->vars['choices']);
556558
}
557559

src/Symfony/Component/Intl/Tests/Data/Provider/AbstractCurrencyDataProviderTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,7 @@ abstract class AbstractCurrencyDataProviderTest extends AbstractDataProviderTest
589589
* @var CurrencyDataProvider
590590
*/
591591
protected $dataProvider;
592+
private $defaultLocale;
592593

593594
protected function setUp()
594595
{
@@ -598,6 +599,15 @@ protected function setUp()
598599
$this->getDataDirectory().'/'.Intl::CURRENCY_DIR,
599600
$this->createEntryReader()
600601
);
602+
603+
$this->defaultLocale = \Locale::getDefault();
604+
}
605+
606+
protected function tearDown()
607+
{
608+
parent::tearDown();
609+
610+
\Locale::setDefault($this->defaultLocale);
601611
}
602612

603613
abstract protected function getDataDirectory();

src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLanguageDataProviderTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,7 @@ abstract class AbstractLanguageDataProviderTest extends AbstractDataProviderTest
831831
* @var LanguageDataProvider
832832
*/
833833
protected $dataProvider;
834+
private $defaultLocale;
834835

835836
protected function setUp()
836837
{
@@ -840,6 +841,15 @@ protected function setUp()
840841
$this->getDataDirectory().'/'.Intl::LANGUAGE_DIR,
841842
$this->createEntryReader()
842843
);
844+
845+
$this->defaultLocale = \Locale::getDefault();
846+
}
847+
848+
protected function tearDown()
849+
{
850+
parent::tearDown();
851+
852+
\Locale::setDefault($this->defaultLocale);
843853
}
844854

845855
abstract protected function getDataDirectory();

src/Symfony/Component/Intl/Tests/Data/Provider/AbstractLocaleDataProviderTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ abstract class AbstractLocaleDataProviderTest extends AbstractDataProviderTest
2323
* @var LocaleDataProvider
2424
*/
2525
protected $dataProvider;
26+
private $defaultLocale;
2627

2728
protected function setUp()
2829
{
@@ -32,6 +33,13 @@ protected function setUp()
3233
$this->getDataDirectory().'/'.Intl::LOCALE_DIR,
3334
$this->createEntryReader()
3435
);
36+
37+
$this->defaultLocale = \Locale::getDefault();
38+
}
39+
40+
protected function tearDown()
41+
{
42+
\Locale::setDefault($this->defaultLocale);
3543
}
3644

3745
abstract protected function getDataDirectory();

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy