From e068661240ceaec63945bda5fc159685b38a3967 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 1 Mar 2017 20:11:57 +0100 Subject: [PATCH] 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. --- src/Symfony/Bridge/PhpUnit/SymfonyTestsListener.php | 6 ++++++ src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/PhpUnit/SymfonyTestsListener.php b/src/Symfony/Bridge/PhpUnit/SymfonyTestsListener.php index 12713f87ea3d..e7e2d08e3715 100644 --- a/src/Symfony/Bridge/PhpUnit/SymfonyTestsListener.php +++ b/src/Symfony/Bridge/PhpUnit/SymfonyTestsListener.php @@ -68,6 +68,12 @@ public function __destruct() } } + public function globalListenerDisabled() + { + self::$globallyEnabled = false; + $this->state = -1; + } + public function startTestSuite(\PHPUnit_Framework_TestSuite $suite) { $suiteName = $suite->getName(); diff --git a/src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php b/src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php index 9d76a0dfad7e..eaad394d980f 100644 --- a/src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php +++ b/src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php @@ -33,7 +33,17 @@ protected function handleConfiguration(array &$arguments) $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; }