Mercurial > hg > Members > shoshi > webvirt
diff cake/tests/lib/reporter/cake_base_reporter.php @ 0:261e66bd5a0c
hg init
author | Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 24 Jul 2011 21:08:31 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cake/tests/lib/reporter/cake_base_reporter.php Sun Jul 24 21:08:31 2011 +0900 @@ -0,0 +1,225 @@ +<?php +/** + * CakeBaseReporter contains common functionality to all cake test suite reporters. + * + * PHP versions 4 and 5 + * + * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing> + * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The Open Group Test Suite License + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://cakephp.org CakePHP(tm) Project + * @package cake + * @subpackage cake.tests.libs.reporter + * @since CakePHP(tm) v 1.3 + * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License + */ + +/** + * CakeBaseReporter contains common reporting features used in the CakePHP Test suite + * + * @package cake + * @subpackage cake.tests.lib + */ +class CakeBaseReporter extends SimpleReporter { + +/** + * Time the test runs started. + * + * @var integer + * @access protected + */ + var $_timeStart = 0; + +/** + * Time the test runs ended + * + * @var integer + * @access protected + */ + var $_timeEnd = 0; + +/** + * Duration of all test methods. + * + * @var integer + * @access protected + */ + var $_timeDuration = 0; + +/** + * Array of request parameters. Usually parsed GET params. + * + * @var array + */ + var $params = array(); + +/** + * Character set for the output of test reporting. + * + * @var string + * @access protected + */ + var $_characterSet; + +/** + * Does nothing yet. The first output will + * be sent on the first test start. + * + * ### Params + * + * - show_passes - Should passes be shown + * - plugin - Plugin test being run? + * - app - App test being run. + * - case - The case being run + * - codeCoverage - Whether the case/group being run is being code covered. + * + * @param string $charset The character set to output with. Defaults to UTF-8 + * @param array $params Array of request parameters the reporter should use. See above. + * @access public + */ + function CakeBaseReporter($charset = 'utf-8', $params = array()) { + $this->SimpleReporter(); + if (!$charset) { + $charset = 'utf-8'; + } + $this->_characterSet = $charset; + $this->params = $params; + } + +/** + * Signals / Paints the beginning of a TestSuite executing. + * Starts the timer for the TestSuite execution time. + * + * @param string $test_name Name of the test that is being run. + * @param integer $size + * @return void + */ + function paintGroupStart($test_name, $size) { + if (empty($this->_timeStart)) { + $this->_timeStart = $this->_getTime(); + } + parent::paintGroupStart($test_name, $size); + } + +/** + * Signals/Paints the end of a TestSuite. All test cases have run + * and timers are stopped. + * + * @param string $test_name Name of the test that is being run. + * @return void + */ + function paintGroupEnd($test_name) { + $this->_timeEnd = $this->_getTime(); + $this->_timeDuration = $this->_timeEnd - $this->_timeStart; + parent::paintGroupEnd($test_name); + } + +/** + * Paints the beginning of a test method being run. This is used + * to start/resume the code coverage tool. + * + * @param string $method The method name being run. + * @return void + */ + function paintMethodStart($method) { + parent::paintMethodStart($method); + if (!empty($this->params['codeCoverage'])) { + CodeCoverageManager::start(); + } + } + +/** + * Paints the end of a test method being run. This is used + * to pause the collection of code coverage if its being used. + * + * @param string $method The name of the method being run. + * @return void + */ + function paintMethodEnd($method) { + parent::paintMethodEnd($method); + if (!empty($this->params['codeCoverage'])) { + CodeCoverageManager::stop(); + } + } + +/** + * Get the current time in microseconds. Similar to getMicrotime in basics.php + * but in a separate function to reduce dependancies. + * + * @return float Time in microseconds + * @access protected + */ + function _getTime() { + list($usec, $sec) = explode(' ', microtime()); + return ((float)$sec + (float)$usec); + } + +/** + * Retrieves a list of test cases from the active Manager class, + * displaying it in the correct format for the reporter subclass + * + * @return mixed + */ + function testCaseList() { + $testList = TestManager::getTestCaseList(); + return $testList; + } + +/** + * Retrieves a list of group test cases from the active Manager class + * displaying it in the correct format for the reporter subclass. + * + * @return void + */ + function groupTestList() { + $testList = TestManager::getGroupTestList(); + return $testList; + } + +/** + * Paints the start of the response from the test suite. + * Used to paint things like head elements in an html page. + * + * @return void + */ + function paintDocumentStart() { + + } + +/** + * Paints the end of the response from the test suite. + * Used to paint things like </body> in an html page. + * + * @return void + */ + function paintDocumentEnd() { + + } + +/** + * Paint a list of test sets, core, app, and plugin test sets + * available. + * + * @return void + */ + function paintTestMenu() { + + } + +/** + * Get the baseUrl if one is available. + * + * @return string The base url for the request. + */ + function baseUrl() { + if (!empty($_SERVER['PHP_SELF'])) { + return $_SERVER['PHP_SELF']; + } + return ''; + } + +}