Skip to content

Commit

Permalink
Revert suite loader "cleanup" from #3830
Browse files Browse the repository at this point in the history
  • Loading branch information
realFlowControl authored and sebastianbergmann committed Oct 31, 2019
1 parent 895a533 commit 975968f
Showing 1 changed file with 91 additions and 37 deletions.
128 changes: 91 additions & 37 deletions src/Runner/StandardTestSuiteLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,98 @@ final class StandardTestSuiteLoader implements TestSuiteLoader
*/
public function load(string $suiteClassName, string $suiteClassFile = ''): ReflectionClass
{
$suiteClassName = \str_replace('.php', '', \basename($suiteClassName));
$suiteClassName = \str_replace('.php', '', $suiteClassName);
$filename = null;

if (empty($suiteClassFile)) {
$suiteClassFile = Filesystem::classNameToFilename(
$suiteClassName
);
}

$loadedClasses = \get_declared_classes();
$filename = FileLoader::checkAndLoad($suiteClassFile);
$loadedClasses = \array_values(
\array_diff(\get_declared_classes(), $loadedClasses)
);
if (!\class_exists($suiteClassName, false)) {
$loadedClasses = \get_declared_classes();

$filename = FileLoader::checkAndLoad($suiteClassFile);

$loadedClasses = \array_values(
\array_diff(\get_declared_classes(), $loadedClasses)
);
}

if (!empty($loadedClasses) && !\class_exists($suiteClassName, false)) {
$offset = 0 - \strlen($suiteClassName);

foreach ($loadedClasses as $loadedClass) {
try {
$class = new ReflectionClass($loadedClass);
} catch (\ReflectionException $e) {
throw new Exception(
$e->getMessage(),
(int) $e->getCode(),
$e
);
}

if (\substr($loadedClass, $offset) === $suiteClassName &&
$class->getFileName() == $filename) {
$suiteClassName = $loadedClass;

break;
}
}
}

if (!empty($loadedClasses) && !\class_exists($suiteClassName, false)) {
$testCaseClass = TestCase::class;

foreach ($loadedClasses as $loadedClass) {
try {
$class = new ReflectionClass($loadedClass);
} catch (\ReflectionException $e) {
throw new Exception(
$e->getMessage(),
(int) $e->getCode(),
$e
);
}

$classFile = $class->getFileName();

if ($class->isSubclassOf($testCaseClass) && !$class->isAbstract()) {
$suiteClassName = $loadedClass;
$testCaseClass = $loadedClass;

$offset = 0 - \strlen($suiteClassName);
$class = null;
if ($classFile == \realpath($suiteClassFile)) {
break;
}
}

foreach ($loadedClasses as $loadedClass) {
if ($class->hasMethod('suite')) {
try {
$method = $class->getMethod('suite');
} catch (\ReflectionException $e) {
throw new Exception(
$e->getMessage(),
(int) $e->getCode(),
$e
);
}

if (!$method->isAbstract() && $method->isPublic() && $method->isStatic()) {
$suiteClassName = $loadedClass;

if ($classFile == \realpath($suiteClassFile)) {
break;
}
}
}
}
}

if (\class_exists($suiteClassName, false)) {
try {
$class = new ReflectionClass($loadedClass);
$class = new ReflectionClass($suiteClassName);
} catch (\ReflectionException $e) {
throw new Exception(
$e->getMessage(),
Expand All @@ -53,36 +125,18 @@ public function load(string $suiteClassName, string $suiteClassFile = ''): Refle
);
}

if ($class->isAbstract()) {
continue;
}

if (\substr($loadedClass, $offset) === $suiteClassName &&
$class->getFileName() == $filename) {
$suiteClassName = $loadedClass;

break;
}

if ($class->isSubclassOf(TestCase::class)) {
$suiteClassName = $loadedClass;

break;
if ($class->getFileName() == \realpath($suiteClassFile)) {
return $class;
}
}

if (!\class_exists($suiteClassName, false) ||
!($class instanceof ReflectionClass)) {
throw new Exception(
\sprintf(
"Class '%s' could not be found in '%s'.",
$suiteClassName,
$suiteClassFile
)
);
}

return $class;
throw new Exception(
\sprintf(
"Class '%s' could not be found in '%s'.",
$suiteClassName,
$suiteClassFile
)
);
}

public function reload(ReflectionClass $aClass): ReflectionClass
Expand Down

0 comments on commit 975968f

Please sign in to comment.