diff --git a/overrides/Runner/TestSuiteLoader.php b/overrides/Runner/TestSuiteLoader.php index efc50b04..d997aeb0 100644 --- a/overrides/Runner/TestSuiteLoader.php +++ b/overrides/Runner/TestSuiteLoader.php @@ -128,6 +128,27 @@ final class TestSuiteLoader } } + if (! $testCaseFound) { + foreach (array_reverse($loadedClasses) as $loadedClass) { + $offset = 0 - strlen($suiteClassName); + + if (stripos(substr($loadedClass, $offset - 1), '\\'.$suiteClassName) === 0 || + stripos(substr($loadedClass, $offset - 1), '_'.$suiteClassName) === 0) { + try { + $class = new ReflectionClass($loadedClass); + // @codeCoverageIgnoreStart + } catch (ReflectionException) { + continue; + } + + $suiteClassName = $loadedClass; + $testCaseFound = true; + + break; + } + } + } + if (! $testCaseFound) { return $this->exceptionFor($suiteClassName, $suiteClassFile); } diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index 1fbe0ed3..be8b5c0b 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -15,6 +15,6 @@ $run = function () { }; test('parallel', function () use ($run) { - expect($run())->toContain('Tests: 4 incomplete, 4 todos, 15 skipped, 626 passed (1550 assertions)') + expect($run())->toContain('Tests: 4 incomplete, 4 todos, 15 skipped, 627 passed (1551 assertions)') ->toContain('Parallel: 3 processes'); });