From 92bc19fd0cb1cfa11ece9ecbb49426037db3c595 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 4 Dec 2019 12:12:45 +0100 Subject: [PATCH 1/3] prevent notice for invalid octal numbers on PHP 7.4 --- src/Symfony/Component/Yaml/Inline.php | 14 ++++++++++---- src/Symfony/Component/Yaml/Tests/InlineTest.php | 10 ++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Yaml/Inline.php b/src/Symfony/Component/Yaml/Inline.php index 4c7d37428e..341482746e 100644 --- a/src/Symfony/Component/Yaml/Inline.php +++ b/src/Symfony/Component/Yaml/Inline.php @@ -759,15 +759,21 @@ class Inline switch (true) { case ctype_digit($scalar): - $raw = $scalar; + if ('0' === $scalar[0]) { + return octdec(preg_replace('/[^0-7]/', '', $scalar)); + } + $cast = (int) $scalar; - return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw); + return ($scalar === (string) $cast) ? $cast : $scalar; case '-' === $scalar[0] && ctype_digit(substr($scalar, 1)): - $raw = $scalar; + if ('0' === $scalar[1]) { + return -octdec(preg_replace('/[^0-7]/', '', substr($scalar, 1))); + } + $cast = (int) $scalar; - return '0' == $scalar[1] ? -octdec(substr($scalar, 1)) : (($raw === (string) $cast) ? $cast : $raw); + return ($scalar === (string) $cast) ? $cast : $scalar; case is_numeric($scalar): case Parser::preg_match(self::getHexRegex(), $scalar): $scalar = str_replace('_', '', $scalar); diff --git a/src/Symfony/Component/Yaml/Tests/InlineTest.php b/src/Symfony/Component/Yaml/Tests/InlineTest.php index b28d472b33..0c6d509381 100644 --- a/src/Symfony/Component/Yaml/Tests/InlineTest.php +++ b/src/Symfony/Component/Yaml/Tests/InlineTest.php @@ -842,4 +842,14 @@ class InlineTest extends TestCase [['' => 'foo', 'bar' => 'ccc'], '{!php/const : foo, bar: ccc}'], ]; } + + public function testParsePositiveOctalNumberContainingInvalidDigits() + { + self::assertSame(342391, Inline::parse('0123456789')); + } + + public function testParseNegativeOctalNumberContainingInvalidDigits() + { + self::assertSame(-342391, Inline::parse('-0123456789')); + } } From dcb5653728050cd218c2cc0998d8b6310e7c3583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Pineau?= Date: Fri, 24 Apr 2020 18:13:38 +0200 Subject: [PATCH 2/3] [PhpUnitBridge] Mark parent class also covered in CoverageListener --- .../Bridge/PhpUnit/Legacy/CoverageListenerTrait.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php b/src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php index 47486dfb26..3075d6fdb0 100644 --- a/src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php +++ b/src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php @@ -73,10 +73,19 @@ class CoverageListenerTrait $r = new \ReflectionProperty($testClass, 'annotationCache'); $r->setAccessible(true); + $covers = $sutFqcn; + if (!\is_array($sutFqcn)) { + $covers = [$sutFqcn]; + while ($parent = get_parent_class($sutFqcn)) { + $covers[] = $parent; + $sutFqcn = $parent; + } + } + $cache = $r->getValue(); $cache = array_replace_recursive($cache, array( \get_class($test) => array( - 'covers' => \is_array($sutFqcn) ? $sutFqcn : array($sutFqcn), + 'covers' => $covers, ), )); $r->setValue($testClass, $cache); From f7fc3cf6cba059e8edb2f58213d3161bdecdcfee Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 5 May 2020 09:38:03 +0200 Subject: [PATCH 3/3] [PhpUnitBridge] fix PHP 5.3 compat --- src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php b/src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php index 3075d6fdb0..ce5538f62d 100644 --- a/src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php +++ b/src/Symfony/Bridge/PhpUnit/Legacy/CoverageListenerTrait.php @@ -75,7 +75,7 @@ class CoverageListenerTrait $covers = $sutFqcn; if (!\is_array($sutFqcn)) { - $covers = [$sutFqcn]; + $covers = array($sutFqcn); while ($parent = get_parent_class($sutFqcn)) { $covers[] = $parent; $sutFqcn = $parent;