Version 1
[yaffs-website] / vendor / phpunit / phpunit / src / Runner / StandardTestSuiteLoader.php
diff --git a/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
new file mode 100644 (file)
index 0000000..3338a73
--- /dev/null
@@ -0,0 +1,118 @@
+<?php
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * The standard test suite loader.
+ *
+ * @since Class available since Release 2.0.0
+ */
+class PHPUnit_Runner_StandardTestSuiteLoader implements PHPUnit_Runner_TestSuiteLoader
+{
+    /**
+     * @param string $suiteClassName
+     * @param string $suiteClassFile
+     *
+     * @return ReflectionClass
+     *
+     * @throws PHPUnit_Framework_Exception
+     */
+    public function load($suiteClassName, $suiteClassFile = '')
+    {
+        $suiteClassName = str_replace('.php', '', $suiteClassName);
+
+        if (empty($suiteClassFile)) {
+            $suiteClassFile = PHPUnit_Util_Filesystem::classNameToFilename(
+                $suiteClassName
+            );
+        }
+
+        if (!class_exists($suiteClassName, false)) {
+            $loadedClasses = get_declared_classes();
+
+            $filename = PHPUnit_Util_Fileloader::checkAndLoad($suiteClassFile);
+
+            $loadedClasses = array_values(
+                array_diff(get_declared_classes(), $loadedClasses)
+            );
+        }
+
+        if (!class_exists($suiteClassName, false) && !empty($loadedClasses)) {
+            $offset = 0 - strlen($suiteClassName);
+
+            foreach ($loadedClasses as $loadedClass) {
+                $class = new ReflectionClass($loadedClass);
+                if (substr($loadedClass, $offset) === $suiteClassName &&
+                    $class->getFileName() == $filename) {
+                    $suiteClassName = $loadedClass;
+                    break;
+                }
+            }
+        }
+
+        if (!class_exists($suiteClassName, false) && !empty($loadedClasses)) {
+            $testCaseClass = 'PHPUnit_Framework_TestCase';
+
+            foreach ($loadedClasses as $loadedClass) {
+                $class     = new ReflectionClass($loadedClass);
+                $classFile = $class->getFileName();
+
+                if ($class->isSubclassOf($testCaseClass) &&
+                    !$class->isAbstract()) {
+                    $suiteClassName = $loadedClass;
+                    $testCaseClass  = $loadedClass;
+
+                    if ($classFile == realpath($suiteClassFile)) {
+                        break;
+                    }
+                }
+
+                if ($class->hasMethod('suite')) {
+                    $method = $class->getMethod('suite');
+
+                    if (!$method->isAbstract() &&
+                        $method->isPublic() &&
+                        $method->isStatic()) {
+                        $suiteClassName = $loadedClass;
+
+                        if ($classFile == realpath($suiteClassFile)) {
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+
+        if (class_exists($suiteClassName, false)) {
+            $class = new ReflectionClass($suiteClassName);
+
+            if ($class->getFileName() == realpath($suiteClassFile)) {
+                return $class;
+            }
+        }
+
+        throw new PHPUnit_Framework_Exception(
+            sprintf(
+                "Class '%s' could not be found in '%s'.",
+                $suiteClassName,
+                $suiteClassFile
+            )
+        );
+    }
+
+    /**
+     * @param ReflectionClass $aClass
+     *
+     * @return ReflectionClass
+     */
+    public function reload(ReflectionClass $aClass)
+    {
+        return $aClass;
+    }
+}