From 80670d85fbe99c0fc1ba2a12607729576968cf72 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Sat, 9 Jan 2010 20:20:51 -0500 Subject: [PATCH] Updating TestSuite shell to use refactored classes and methods in the TestSuite. --- cake/console/libs/testsuite.php | 91 +++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 37 deletions(-) diff --git a/cake/console/libs/testsuite.php b/cake/console/libs/testsuite.php index a0fdef3c37e..3228a7a330a 100644 --- a/cake/console/libs/testsuite.php +++ b/cake/console/libs/testsuite.php @@ -100,41 +100,64 @@ function initialize() { foreach ($plugins as $p) { $this->plugins[] = Inflector::underscore($p); } + $this->parseArgs(); + $this->getManager(); } /** - * Main entry point to this shell + * Parse the arguments given into the Shell object properties. * * @return void * @access public */ - function main() { - $this->out($this->headline); - $this->hr(); + function parseArgs() { + $this->category = $this->args[0]; - if (count($this->args) > 0) { - $this->category = $this->args[0]; + if (!in_array($this->category, array('app', 'core'))) { + $this->isPluginTest = true; + } - if (!in_array($this->category, array('app', 'core'))) { - $this->isPluginTest = true; - } + if (isset($this->args[1])) { + $this->type = $this->args[1]; + } - if (isset($this->args[1])) { - $this->type = $this->args[1]; + if (isset($this->args[2])) { + if ($this->args[2] == 'cov') { + $this->doCoverage = true; + } else { + $this->file = Inflector::underscore($this->args[2]); } + } - if (isset($this->args[2])) { - if ($this->args[2] == 'cov') { - $this->doCoverage = true; - } else { - $this->file = Inflector::underscore($this->args[2]); - } - } + if (isset($this->args[3]) && $this->args[3] == 'cov') { + $this->doCoverage = true; + } + } - if (isset($this->args[3]) && $this->args[3] == 'cov') { - $this->doCoverage = true; - } - } else { +/** + * Gets a manager instance, and set the app/plugin properties. + * + * @return void + */ + function getManager() { + $this->Manager = new TestManager(); + $this->Manager->appTest = ($this->category === 'app'); + if ($this->isPluginTest) { + $this->Manager->pluginTest = $this->category; + } + } + +/** + * Main entry point to this shell + * + * @return void + * @access public + */ + function main() { + $this->out($this->headline); + $this->hr(); + + if (count($this->args) == 0) { $this->err('Sorry, you did not pass any arguments!'); } @@ -252,11 +275,10 @@ function __canRun() { * @access private */ function __run() { - $reporter = new CLIReporter(); - $this->__setGetVars(); + $Reporter = new CakeCliReporter(); if ($this->type == 'all') { - return TestManager::runAllTests($reporter); + return $this->Manager->runAllTests($Reporter); } if ($this->doCoverage) { @@ -278,9 +300,9 @@ function __run() { if ($this->doCoverage) { require_once CAKE . 'tests' . DS . 'lib' . DS . 'code_coverage_manager.php'; - CodeCoverageManager::start($ucFirstGroup, $reporter); + CodeCoverageManager::start($ucFirstGroup, $Reporter); } - $result = TestManager::runGroupTest($ucFirstGroup, $reporter); + $result = $this->Manager->runGroupTest($ucFirstGroup, $Reporter); if ($this->doCoverage) { CodeCoverageManager::report(); } @@ -301,10 +323,10 @@ function __run() { if ($this->doCoverage) { require_once CAKE . 'tests' . DS . 'lib' . DS . 'code_coverage_manager.php'; - CodeCoverageManager::start($case, $reporter); + CodeCoverageManager::start($case, $Reporter); } - $result = TestManager::runTestCase($case, $reporter); + $result = $this->Manager->runTestCase($case, $Reporter); if ($this->doCoverage) { CodeCoverageManager::report(); } @@ -328,14 +350,9 @@ function __findFolderByCategory($category) { if (array_key_exists($category, $paths)) { $folder = $paths[$category] . 'tests'; } else { - $scoredCategory = Inflector::underscore($category); - $folder = APP . 'plugins' . DS . $scoredCategory . DS; - $pluginPaths = App::path('plugins'); - foreach ($pluginPaths as $path) { - if (file_exists($path . $scoredCategory . DS . 'tests')) { - $folder = $path . $scoredCategory . DS . 'tests'; - break; - } + $pluginPath = App::pluginPath($category); + if (is_dir($pluginPath . 'tests')) { + $folder = $pluginPath . 'tests' . DS; } } return $folder;