disable global test listener when not registered

The global test listener is always initialized to register the clock
mock and DNS mock as soon as possible. However, when the listener is
registered locally through the PHPUnit config, it will never be
registered as a listener. In thise case, the state of the local
listener must be reset to correctly report expected deprecation test
results.
This commit is contained in:
Christian Flothmann 2017-03-01 20:11:57 +01:00
parent 4b27628bca
commit e068661240
2 changed files with 17 additions and 1 deletions

View File

@ -68,6 +68,12 @@ class SymfonyTestsListener extends \PHPUnit_Framework_BaseTestListener
}
}
public function globalListenerDisabled()
{
self::$globallyEnabled = false;
$this->state = -1;
}
public function startTestSuite(\PHPUnit_Framework_TestSuite $suite)
{
$suiteName = $suite->getName();

View File

@ -33,7 +33,17 @@ class TestRunner extends \PHPUnit_TextUI_TestRunner
$arguments['listeners'] = isset($arguments['listeners']) ? $arguments['listeners'] : array();
if (!array_filter($arguments['listeners'], function ($listener) { return $listener instanceof SymfonyTestsListener; })) {
$registeredLocally = false;
foreach ($arguments['listeners'] as $registeredListener) {
if ($registeredListener instanceof SymfonyTestsListener) {
$registeredListener->globalListenerDisabled();
$registeredLocally = true;
break;
}
}
if (!$registeredLocally) {
$arguments['listeners'][] = $listener;
}