addFileToBlacklist(__FILE__, 'DEFAULT'); /** * Class to customize loading of test suites from CLI * * @package cake.tests.lib */ class CakeTestSuiteCommand extends PHPUnit_TextUI_Command { /** * Construct method * * @param array $params list of options to be used for this run */ public function __construct($loader, $params = array()) { $this->arguments['loader'] = $loader; $this->arguments['test'] = $params['case']; $this->arguments['testFile'] = $params; $this->_params = $params; } /** * @param array $argv * @param boolean $exit */ public function run(array $argv, $exit = TRUE) { $this->handleArguments($argv); $runner = new CakeTestRunner($this->arguments['loader']); if (is_object($this->arguments['test']) && $this->arguments['test'] instanceof PHPUnit_Framework_Test) { $suite = $this->arguments['test']; } else { $suite = $runner->getTest( $this->arguments['test'], $this->arguments['testFile'], $this->arguments['syntaxCheck'] ); } if (count($suite) == 0) { $skeleton = new PHPUnit_Util_Skeleton_Test( $suite->getName(), $this->arguments['testFile'] ); $result = $skeleton->generate(TRUE); if (!$result['incomplete']) { eval(str_replace(array(''), '', $result['code'])); $suite = new PHPUnit_Framework_TestSuite( $this->arguments['test'] . 'Test' ); } } if ($this->arguments['listGroups']) { PHPUnit_TextUI_TestRunner::printVersionString(); print "Available test group(s):\n"; $groups = $suite->getGroups(); sort($groups); foreach ($groups as $group) { print " - $group\n"; } exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } unset($this->arguments['test']); unset($this->arguments['testFile']); try { $result = $runner->doRun($suite, $this->arguments); } catch (PHPUnit_Framework_Exception $e) { print $e->getMessage() . "\n"; } if ($exit) { if (isset($result) && $result->wasSuccessful()) { exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT); } else if (!isset($result) || $result->errorCount() > 0) { exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT); } else { exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT); } } } }