From f4cd6708b738c7d47e4cf4f327e68fbefc6aa55c Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 1 Mar 2017 20:06:54 +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. --- .../Bridge/PhpUnit/Legacy/SymfonyTestsListener.php | 5 +++++ .../PhpUnit/Legacy/SymfonyTestsListenerTrait.php | 6 ++++++ src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php | 12 +++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListener.php b/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListener.php index 15910de5500da..5ed545a5127cc 100644 --- a/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListener.php +++ b/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListener.php @@ -27,6 +27,11 @@ public function __construct(array $mockedNamespaces = array()) $this->trait = new SymfonyTestsListenerTrait($mockedNamespaces); } + public function globalListenerDisabled() + { + $this->trait->globalListenerDisabled(); + } + public function startTestSuite(\PHPUnit_Framework_TestSuite $suite) { return $this->trait->startTestSuite($suite); diff --git a/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListenerTrait.php b/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListenerTrait.php index 4d64fdc87fb74..b26388452485d 100644 --- a/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListenerTrait.php +++ b/src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListenerTrait.php @@ -93,6 +93,12 @@ public function __destruct() } } + public function globalListenerDisabled() + { + self::$globallyEnabled = false; + $this->state = -1; + } + public function startTestSuite($suite) { if (class_exists('PHPUnit_Util_Blacklist', false)) { diff --git a/src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php b/src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php index 27865be46bade..2d18b4f9afa2b 100644 --- a/src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php +++ b/src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php @@ -38,7 +38,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; }