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; }