diff --git a/src/TextUI/TestRunner.php b/src/TextUI/TestRunner.php index bc167dd14e7..fdb8f006922 100644 --- a/src/TextUI/TestRunner.php +++ b/src/TextUI/TestRunner.php @@ -192,7 +192,7 @@ public function doRun(Test $suite, array $arguments = [], bool $exit = true): Te $cache = new TestResultCache; } - $this->extensions[] = new ResultCacheExtension($cache); + $this->addExtension(new ResultCacheExtension($cache)); } if ($arguments['executionOrder'] !== TestSuiteSorter::ORDER_DEFAULT || $arguments['executionOrderDefects'] !== TestSuiteSorter::ORDER_DEFAULT || $arguments['resolveDependencies']) { @@ -796,6 +796,11 @@ public function getLoader(): TestSuiteLoader return $this->loader; } + public function addExtension(TestHook $extension): void + { + $this->extensions[] = $extension; + } + protected function createTestResult(): TestResult { return new TestResult; @@ -1056,12 +1061,16 @@ protected function handleConfiguration(array &$arguments): void } if (\count($extension['arguments']) == 0) { - $this->extensions[] = $extensionClass->newInstance(); + $extensionObject = $extensionClass->newInstance(); } else { - $this->extensions[] = $extensionClass->newInstanceArgs( + $extensionObject = $extensionClass->newInstanceArgs( $extension['arguments'] ); } + + \assert($extensionObject instanceof TestHook); + + $this->addExtension($extensionObject); } foreach ($arguments['configuration']->getListenerConfiguration() as $listener) {