mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Moving methods into the loader class.
Getting rid of lame functions and using Spl more effectively.
This commit is contained in:
parent
0c09d08585
commit
e5c898a4d2
2 changed files with 42 additions and 117 deletions
|
@ -85,7 +85,7 @@ class CakeTestLoader implements PHPUnit_Runner_TestSuiteLoader {
|
||||||
* @param array $params
|
* @param array $params
|
||||||
* @return string The base path.
|
* @return string The base path.
|
||||||
*/
|
*/
|
||||||
protected function _basePath($params) {
|
protected static function _basePath($params) {
|
||||||
$result = null;
|
$result = null;
|
||||||
if (!empty($params['core'])) {
|
if (!empty($params['core'])) {
|
||||||
$result = CORE_TEST_CASES;
|
$result = CORE_TEST_CASES;
|
||||||
|
@ -98,4 +98,44 @@ class CakeTestLoader implements PHPUnit_Runner_TestSuiteLoader {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of files for the test listing.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function generateTestList($params) {
|
||||||
|
$directory = self::_basePath($params);
|
||||||
|
$fileList = self::_getRecursiveFileList($directory);
|
||||||
|
|
||||||
|
$testCases = array();
|
||||||
|
foreach ($fileList as $testCaseFile) {
|
||||||
|
$testCases[$testCaseFile] = str_replace($directory . DS, '', $testCaseFile);
|
||||||
|
}
|
||||||
|
return $testCases;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a recursive list of files from a given directory and matches then against
|
||||||
|
* a given fileTestFunction, like isTestCaseFile()
|
||||||
|
*
|
||||||
|
* @param string $directory The directory to scan for files.
|
||||||
|
* @param mixed $fileTestFunction
|
||||||
|
*/
|
||||||
|
protected static function _getRecursiveFileList($directory = '.') {
|
||||||
|
$fileList = array();
|
||||||
|
if (!is_dir($directory)) {
|
||||||
|
return $fileList;
|
||||||
|
}
|
||||||
|
|
||||||
|
$files = new RegexIterator(
|
||||||
|
new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)),
|
||||||
|
'/.*\.test.php$/'
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$fileList[] = $file->getPathname();
|
||||||
|
}
|
||||||
|
return $fileList;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,125 +101,10 @@ class CakeBaseReporter extends PHPUnit_TextUI_ResultPrinter {
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function testCaseList() {
|
public function testCaseList() {
|
||||||
$testList = $this->_generateTestList($this->params);
|
$testList = CakeTestLoader::generateTestList($this->params);
|
||||||
return $testList;
|
return $testList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the list of files for the test listing.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
protected function _generateTestList($params) {
|
|
||||||
$directory = self::_getTestsPath($params);
|
|
||||||
$fileList = self::_getTestFileList($directory);
|
|
||||||
|
|
||||||
$testCases = array();
|
|
||||||
foreach ($fileList as $testCaseFile) {
|
|
||||||
$testCases[$testCaseFile] = str_replace($directory . DS, '', $testCaseFile);
|
|
||||||
}
|
|
||||||
return $testCases;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a list of test files from a given directory
|
|
||||||
*
|
|
||||||
* @param string $directory Directory to get test case files from.
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
protected static function &_getTestFileList($directory = '.') {
|
|
||||||
$return = self::_getRecursiveFileList($directory, array('self', '_isTestCaseFile'));
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets a recursive list of files from a given directory and matches then against
|
|
||||||
* a given fileTestFunction, like isTestCaseFile()
|
|
||||||
*
|
|
||||||
* @param string $directory The directory to scan for files.
|
|
||||||
* @param mixed $fileTestFunction
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
protected static function &_getRecursiveFileList($directory = '.', $fileTestFunction) {
|
|
||||||
$fileList = array();
|
|
||||||
if (!is_dir($directory)) {
|
|
||||||
return $fileList;
|
|
||||||
}
|
|
||||||
|
|
||||||
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
|
|
||||||
|
|
||||||
foreach ($files as $file) {
|
|
||||||
if (!$file->isFile()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$file = $file->getRealPath();
|
|
||||||
|
|
||||||
if (call_user_func_array($fileTestFunction, array($file))) {
|
|
||||||
$fileList[] = $file;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $fileList;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Extension suffix for test case files.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected static $_testExtension = '.test.php';
|
|
||||||
/**
|
|
||||||
* Tests if a file has the correct test case extension
|
|
||||||
*
|
|
||||||
* @param string $file
|
|
||||||
* @return boolean Whether $file is a test case.
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
protected static function _isTestCaseFile($file) {
|
|
||||||
return self::_hasExpectedExtension($file, self::$_testExtension);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if a file has a specific extension
|
|
||||||
*
|
|
||||||
* @param string $file
|
|
||||||
* @param string $extension
|
|
||||||
* @return void
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
protected static function _hasExpectedExtension($file, $extension) {
|
|
||||||
return $extension == strtolower(substr($file, (0 - strlen($extension))));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the given path to the test files depending on a given type of tests (core, app, plugin)
|
|
||||||
*
|
|
||||||
* @param array $params Array of parameters for getting test paths.
|
|
||||||
* Can contain app, type, and plugin params.
|
|
||||||
* @return string The path tests are located on
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
protected static function _getTestsPath($params) {
|
|
||||||
$result = null;
|
|
||||||
if (!empty($params['app'])) {
|
|
||||||
$result = APP_TEST_CASES;
|
|
||||||
} else if (!empty($params['plugin'])) {
|
|
||||||
$pluginPath = App::pluginPath($params['plugin']);
|
|
||||||
$result = $pluginPath . 'tests' . DS . 'cases';
|
|
||||||
} else {
|
|
||||||
$result = CORE_TEST_CASES;
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the extension for either 'group' or 'test' types.
|
|
||||||
*
|
|
||||||
* @param string $type Type of test to get, either 'test' or 'group'
|
|
||||||
* @return string Extension suffix for test.
|
|
||||||
*/
|
|
||||||
public static function getExtension($type = 'test') {
|
|
||||||
return self::$_testExtension;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Paints the start of the response from the test suite.
|
* Paints the start of the response from the test suite.
|
||||||
* Used to paint things like head elements in an html page.
|
* Used to paint things like head elements in an html page.
|
||||||
|
|
Loading…
Reference in a new issue