diff --git a/cake/tests/lib/cake_test_suite_dispatcher.php b/cake/tests/lib/cake_test_suite_dispatcher.php index 5b17d8707f6..d7763facf07 100644 --- a/cake/tests/lib/cake_test_suite_dispatcher.php +++ b/cake/tests/lib/cake_test_suite_dispatcher.php @@ -68,6 +68,13 @@ class CakeTestSuiteDispatcher { */ protected $_baseDir; +/** + * boolean to set auto parsing of params. + * + * @var boolean + */ + protected $_paramsParsed = false; + /** * reporter instance used for the request * @@ -96,13 +103,14 @@ function dispatch() { $this->_parseParams(); if ($this->params['case']) { - $this->_runTestCase(); + $value = $this->_runTestCase(); } else { - $this->_testCaseList(); + $value = $this->_testCaseList(); } $output = ob_get_clean(); echo $output; + return $value; } /** @@ -202,23 +210,36 @@ function &getReporter() { return self::$_Reporter; } +/** + * Sets the params, calling this will bypass the auto parameter parsing. + * + * @param array $params Array of parameters for the dispatcher + * @return void + */ + public function setParams($params) { + $this->params = $params; + $this->_paramsParsed = true; + } + /** * Parse url params into a 'request' * * @return void */ function _parseParams() { - if (!isset($_SERVER['SERVER_NAME'])) { - $_SERVER['SERVER_NAME'] = ''; - } - foreach ($this->params as $key => $value) { - if (isset($_GET[$key])) { - $this->params[$key] = $_GET[$key]; + if (!$this->_paramsParsed) { + if (!isset($_SERVER['SERVER_NAME'])) { + $_SERVER['SERVER_NAME'] = ''; + } + foreach ($this->params as $key => $value) { + if (isset($_GET[$key])) { + $this->params[$key] = $_GET[$key]; + } + } + if (isset($_GET['code_coverage'])) { + $this->params['codeCoverage'] = true; + $this->_checkXdebug(); } - } - if (isset($_GET['code_coverage'])) { - $this->params['codeCoverage'] = true; - $this->_checkXdebug(); } $this->params['baseUrl'] = $this->_baseUrl; $this->params['baseDir'] = $this->_baseDir; @@ -232,6 +253,6 @@ function _parseParams() { */ function _runTestCase() { $Reporter = CakeTestSuiteDispatcher::getReporter(); - $this->Manager->runTestCase($this->params['case'], $Reporter, $this->params['codeCoverage']); + return $this->Manager->runTestCase($this->params['case'], $Reporter, $this->params['codeCoverage']); } }