[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
* all deprecations but those from tests marked with `@group legacy` are always
displayed when not in `weak` mode
3.3.0
-----

View File

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

View File

@ -21,6 +21,8 @@ class FooTestCase
{
@trigger_error('silenced 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()

View File

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

View File

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