Skip to content

Commit f4cd670

Browse files
committed
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.
1 parent f7bdfd0 commit f4cd670

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListener.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ public function __construct(array $mockedNamespaces = array())
2727
$this->trait = new SymfonyTestsListenerTrait($mockedNamespaces);
2828
}
2929

30+
public function globalListenerDisabled()
31+
{
32+
$this->trait->globalListenerDisabled();
33+
}
34+
3035
public function startTestSuite(\PHPUnit_Framework_TestSuite $suite)
3136
{
3237
return $this->trait->startTestSuite($suite);

src/Symfony/Bridge/PhpUnit/Legacy/SymfonyTestsListenerTrait.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ public function __destruct()
9393
}
9494
}
9595

96+
public function globalListenerDisabled()
97+
{
98+
self::$globallyEnabled = false;
99+
$this->state = -1;
100+
}
101+
96102
public function startTestSuite($suite)
97103
{
98104
if (class_exists('PHPUnit_Util_Blacklist', false)) {

src/Symfony/Bridge/PhpUnit/TextUI/TestRunner.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,17 @@ protected function handleConfiguration(array &$arguments)
3838

3939
$arguments['listeners'] = isset($arguments['listeners']) ? $arguments['listeners'] : array();
4040

41-
if (!array_filter($arguments['listeners'], function ($listener) { return $listener instanceof SymfonyTestsListener; })) {
41+
$registeredLocally = false;
42+
43+
foreach ($arguments['listeners'] as $registeredListener) {
44+
if ($registeredListener instanceof SymfonyTestsListener) {
45+
$registeredListener->globalListenerDisabled();
46+
$registeredLocally = true;
47+
break;
48+
}
49+
}
50+
51+
if (!$registeredLocally) {
4252
$arguments['listeners'][] = $listener;
4353
}
4454

0 commit comments

Comments
 (0)