/** * Executes the tests depending on our settings * * @return void * @access private */ public function __run() { $Reporter = new CakeXmlReporter('utf-8', array('app' => $this->Manager->appTest, 'plugin' => $this->Manager->pluginTest, 'group' => $this->type === 'group', 'codeCoverage' => $this->doCoverage)); if ($this->doCoverage) { if (!extension_loaded('xdebug')) { $this->out(__('You must install Xdebug to use the CakePHP(tm) Code Coverage Analyzation. Download it from http://www.xdebug.org/docs/install', true)); $this->_stop(0); } } ob_start(); try { if ($this->type == 'all') { $result = $this->Manager->runAllTests($Reporter); } else { if ($this->type == 'group') { $ucFirstGroup = ucfirst($this->file); if ($this->doCoverage) { require_once CAKE . 'tests' . DS . 'lib' . DS . 'code_coverage_manager.php'; CodeCoverageManager::init($ucFirstGroup, $Reporter); CodeCoverageManager::start(); } $result = $this->Manager->runGroupTest($ucFirstGroup, $Reporter); } else { $folder = $folder = $this->__findFolderByCategory($this->category); $case = $this->__getFileName($folder, $this->isPluginTest); if ($this->doCoverage) { require_once CAKE . 'tests' . DS . 'lib' . DS . 'code_coverage_manager.php'; CodeCoverageManager::init($case, $Reporter); CodeCoverageManager::start(); } $result = $this->Manager->runTestCase($case, $Reporter); } } } catch (Exception $e) { ob_get_clean(); $this->out('Tests failed to run. ' . $e->getMessage()); $this->_stop(1); } $xml = ob_get_clean(); $xmlD = new DOMDocument(); $xmlD->loadXML($xml); $xslt = new XSLTProcessor(); $XSL = new DOMDocument(); $XSL->load(dirname(__FILE__) . DS . 'xsl' . DS . 'to-junit.xsl'); $xslt->importStylesheet($XSL); $out = $xslt->transformToXML($xmlD); $time = time(); file_put_contents(ROOT . DS . "build" . DS . "logs" . DS . "junit-{$time}.xml", $out); echo "Done.\n"; }
/** * Runs a test case file. * * @return void */ function _runTestCase() { $Reporter =& CakeTestSuiteDispatcher::getReporter(); if ($this->params['codeCoverage']) { CodeCoverageManager::init($this->params['case'], $Reporter); } $this->Manager->runTestCase($this->params['case'], $Reporter); }
/** * Executes the tests depending on our settings * * @return void * @access private */ function __run() { $Reporter = new CakeCliReporter('utf-8', array('app' => $this->Manager->appTest, 'plugin' => $this->Manager->pluginTest, 'group' => $this->type === 'group', 'codeCoverage' => $this->doCoverage)); if ($this->type == 'all') { return $this->Manager->runAllTests($Reporter); } if ($this->doCoverage) { if (!extension_loaded('xdebug')) { $this->out(__('You must install Xdebug to use the CakePHP(tm) Code Coverage Analyzation. Download it from http://www.xdebug.org/docs/install', true)); $this->_stop(0); } } if ($this->type == 'group') { $ucFirstGroup = ucfirst($this->file); if ($this->doCoverage) { require_once CAKE . 'tests' . DS . 'lib' . DS . 'code_coverage_manager.php'; CodeCoverageManager::init($ucFirstGroup, $Reporter); CodeCoverageManager::start(); } $result = $this->Manager->runGroupTest($ucFirstGroup, $Reporter); return $result; } $folder = $folder = $this->__findFolderByCategory($this->category); $case = $this->__getFileName($folder, $this->isPluginTest); if ($this->doCoverage) { require_once CAKE . 'tests' . DS . 'lib' . DS . 'code_coverage_manager.php'; CodeCoverageManager::init($case, $Reporter); CodeCoverageManager::start(); } $result = $this->Manager->runTestCase($case, $Reporter); return $result; }
/** * Test that test cases don't cause errors * * @return void */ function testNoTestCaseSuppliedNoErrors() { if ($this->skipIf(PHP_SAPI == 'cli', 'Is cli, cannot run this test %s')) { return; } $reporter =& new CakeHtmlReporter(null, array('group' => false, 'app' => false, 'plugin' => false)); $path = LIBS; if (strpos(LIBS, ROOT) === false) { $path = ROOT . DS . LIBS; } App::import('Core', 'Folder'); $folder = new Folder(); $folder->cd($path); $contents = $folder->read(); $contents[1] = array_filter($contents[1], array(&$this, '_basenameFilter')); foreach ($contents[1] as $file) { CodeCoverageManager::init('libs' . DS . $file, $reporter); CodeCoverageManager::report(false); $this->assertNoErrors('libs' . DS . $file); } }