[Bridge/PhpUnit] Fix tests by backporting #25997 to 3.4

This commit is contained in:
Nicolas Grekas 2018-02-11 22:40:17 +01:00
parent edd507af78
commit 9a9c0f6142
5 changed files with 13 additions and 11 deletions

View File

@ -5,6 +5,8 @@ CHANGELOG
----- -----
* added a `CoverageListener` to enhance the code coverage report * added a `CoverageListener` to enhance the code coverage report
* all deprecations but those from tests marked with `@group legacy` are always
displayed when not in `weak` mode
3.3.0 3.3.0
----- -----

View File

@ -110,8 +110,7 @@ class DeprecationErrorHandler
$trace = debug_backtrace(true); $trace = debug_backtrace(true);
$group = 'other'; $group = 'other';
$isVendor = false; $isVendor = DeprecationErrorHandler::MODE_WEAK_VENDORS === $mode && $inVendors($file);
$isWeak = DeprecationErrorHandler::MODE_WEAK === $mode || (DeprecationErrorHandler::MODE_WEAK_VENDORS === $mode && $isVendor = $inVendors($file));
$i = count($trace); $i = count($trace);
while (1 < $i && (!isset($trace[--$i]['class']) || ('ReflectionMethod' === $trace[$i]['class'] || 0 === strpos($trace[$i]['class'], 'PHPUnit_') || 0 === strpos($trace[$i]['class'], 'PHPUnit\\')))) { while (1 < $i && (!isset($trace[--$i]['class']) || ('ReflectionMethod' === $trace[$i]['class'] || 0 === strpos($trace[$i]['class'], 'PHPUnit_') || 0 === strpos($trace[$i]['class'], 'PHPUnit\\')))) {
@ -128,7 +127,7 @@ class DeprecationErrorHandler
// \Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait::endTest() // \Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerTrait::endTest()
// then we need to use the serialized information to determine // then we need to use the serialized information to determine
// if the error has been triggered from vendor code. // if the error has been triggered from vendor code.
$isWeak = DeprecationErrorHandler::MODE_WEAK === $mode || (DeprecationErrorHandler::MODE_WEAK_VENDORS === $mode && $isVendor = isset($parsedMsg['triggering_file']) && $inVendors($parsedMsg['triggering_file'])); $isVendor = DeprecationErrorHandler::MODE_WEAK_VENDORS === $mode && isset($parsedMsg['triggering_file']) && $inVendors($parsedMsg['triggering_file']);
} else { } else {
$class = isset($trace[$i]['object']) ? get_class($trace[$i]['object']) : $trace[$i]['class']; $class = isset($trace[$i]['object']) ? get_class($trace[$i]['object']) : $trace[$i]['class'];
$method = $trace[$i]['function']; $method = $trace[$i]['function'];
@ -145,7 +144,7 @@ class DeprecationErrorHandler
|| in_array('legacy', $Test::getGroups($class, $method), true) || in_array('legacy', $Test::getGroups($class, $method), true)
) { ) {
$group = 'legacy'; $group = 'legacy';
} elseif (DeprecationErrorHandler::MODE_WEAK_VENDORS === $mode && $isVendor) { } elseif ($isVendor) {
$group = 'remaining vendor'; $group = 'remaining vendor';
} else { } else {
$group = 'remaining'; $group = 'remaining';
@ -165,13 +164,13 @@ class DeprecationErrorHandler
exit(1); exit(1);
} }
if ('legacy' !== $group && !$isWeak) { if ('legacy' !== $group && DeprecationErrorHandler::MODE_WEAK !== $mode) {
$ref = &$deprecations[$group][$msg]['count']; $ref = &$deprecations[$group][$msg]['count'];
++$ref; ++$ref;
$ref = &$deprecations[$group][$msg][$class.'::'.$method]; $ref = &$deprecations[$group][$msg][$class.'::'.$method];
++$ref; ++$ref;
} }
} elseif (!$isWeak) { } elseif (DeprecationErrorHandler::MODE_WEAK !== $mode) {
$ref = &$deprecations[$group][$msg]['count']; $ref = &$deprecations[$group][$msg]['count'];
++$ref; ++$ref;
} }

View File

@ -21,6 +21,8 @@ class FooTestCase
{ {
@trigger_error('silenced foo deprecation', E_USER_DEPRECATED); @trigger_error('silenced foo deprecation', E_USER_DEPRECATED);
trigger_error('unsilenced foo deprecation', E_USER_DEPRECATED); trigger_error('unsilenced foo deprecation', E_USER_DEPRECATED);
@trigger_error('silenced foo deprecation', E_USER_DEPRECATED);
trigger_error('unsilenced foo deprecation', E_USER_DEPRECATED);
} }
public function testNonLegacyBar() public function testNonLegacyBar()

View File

@ -37,4 +37,3 @@ Unsilenced deprecation notices (1)
Legacy deprecation notices (1) Legacy deprecation notices (1)
Other deprecation notices (1) Other deprecation notices (1)

View File

@ -20,10 +20,10 @@ require __DIR__.'/fake_vendor/acme/lib/deprecation_riddled.php';
?> ?>
--EXPECTF-- --EXPECTF--
Unsilenced deprecation notices (2) Unsilenced deprecation notices (3)
1x: unsilenced foo deprecation 2x: unsilenced foo deprecation
1x in FooTestCase::testLegacyFoo 2x in FooTestCase::testLegacyFoo
1x: unsilenced bar deprecation 1x: unsilenced bar deprecation
1x in FooTestCase::testNonLegacyBar 1x in FooTestCase::testNonLegacyBar
@ -33,7 +33,7 @@ Remaining vendor deprecation notices (1)
1x: silenced bar deprecation 1x: silenced bar deprecation
1x in FooTestCase::testNonLegacyBar 1x in FooTestCase::testNonLegacyBar
Legacy deprecation notices (1) Legacy deprecation notices (2)
Other deprecation notices (1) Other deprecation notices (1)