From 0baab93929bc72f0d5ca7c741de8b3a7e62be2ad Mon Sep 17 00:00:00 2001 From: mark_story Date: Sat, 26 Jun 2010 13:48:11 -0400 Subject: [PATCH] Doing some tweaks to CakeTestSuiteDispatcher to make CLI testing easier. --- cake/tests/lib/cake_test_suite_dispatcher.php | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/cake/tests/lib/cake_test_suite_dispatcher.php b/cake/tests/lib/cake_test_suite_dispatcher.php index 5b17d8707..d7763facf 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 @@ class CakeTestSuiteDispatcher { $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 @@ class CakeTestSuiteDispatcher { 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 @@ class CakeTestSuiteDispatcher { */ 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']); } }