mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-31 17:16:18 +00:00
da79dff7d7
- Dispatcher sets a Controller::here variable with the real URL used to access the page, so that tag generators can that use an url (linkTo and formTag for example) use the real url, not guess it from the controller and action names which often fails - Log class works more reliably and a LogError() shortcut function was added - Nstring class added, to store string-related functions (there are just four yet, including a random password generator and an string-to-array splitter - SimpleTest library (with Rephlux) included in /vendors; I've tweaked SimpleScorer::inCli() function, because it didn't work on my setup, it should work everywhere now (it checks for empty REQUEST_METHOD, which should only be empty in CLI) git-svn-id: https://svn.cakephp.org/repo/trunk/cake@248 3807eeeb-6ff5-0310-8944-8be069107fe0
378 lines
No EOL
12 KiB
PHP
378 lines
No EOL
12 KiB
PHP
<?php
|
|
/**
|
|
* base include file for SimpleTest
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
* @version $Id$
|
|
*/
|
|
|
|
/**
|
|
* Can recieve test events and display them. Display
|
|
* is achieved by making display methods available
|
|
* and visiting the incoming event.
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
* @abstract
|
|
*/
|
|
class SimpleScorer {
|
|
var $_passes;
|
|
var $_fails;
|
|
var $_exceptions;
|
|
var $_is_dry_run;
|
|
|
|
/**
|
|
* Starts the test run with no results.
|
|
* @access public
|
|
*/
|
|
function SimpleScorer() {
|
|
$this->_passes = 0;
|
|
$this->_fails = 0;
|
|
$this->_exceptions = 0;
|
|
$this->_is_dry_run = false;
|
|
}
|
|
|
|
/**
|
|
* Signals that the next evaluation will be a dry
|
|
* run. That is, the structure events will be
|
|
* recorded, but no tests will be run.
|
|
*/
|
|
function makeDry($is_dry = true) {
|
|
$this->_is_dry_run = $is_dry;
|
|
}
|
|
|
|
/**
|
|
* The reporter has a veto on what should be run.
|
|
* @param string $test_case_name name of test case.
|
|
* @param string $method Name of test method.
|
|
* @access public
|
|
*/
|
|
function shouldInvoke($test_case_name, $method) {
|
|
return ! $this->_is_dry_run;
|
|
}
|
|
|
|
/**
|
|
* Accessor for current status. Will be false
|
|
* if there have been any failures or exceptions.
|
|
* Used for command line tools.
|
|
* @return boolean True if no failures.
|
|
* @access public
|
|
*/
|
|
function getStatus() {
|
|
if ($this->_exceptions + $this->_fails > 0) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test method.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintMethodStart($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test method.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintMethodEnd($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test case.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintCaseStart($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test case.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintCaseEnd($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a group test.
|
|
* @param string $test_name Name of test or other label.
|
|
* @param integer $size Number of test cases starting.
|
|
* @access public
|
|
*/
|
|
function paintGroupStart($test_name, $size) {
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a group test.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintGroupEnd($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Increments the pass count.
|
|
* @param string $message Message is ignored.
|
|
* @access public
|
|
*/
|
|
function paintPass($message) {
|
|
$this->_passes++;
|
|
}
|
|
|
|
/**
|
|
* Increments the fail count.
|
|
* @param string $message Message is ignored.
|
|
* @access public
|
|
*/
|
|
function paintFail($message) {
|
|
$this->_fails++;
|
|
}
|
|
|
|
/**
|
|
* Deals with PHP 4 throwing an error.
|
|
* @param string $message Text of error formatted by
|
|
* the test case.
|
|
* @access public
|
|
*/
|
|
function paintError($message) {
|
|
$this->paintException($message);
|
|
}
|
|
|
|
/**
|
|
* Deals with PHP 5 throwing an exception
|
|
* This isn't really implemented yet.
|
|
* @param Exception $exception Object thrown.
|
|
* @access public
|
|
*/
|
|
function paintException($exception) {
|
|
$this->_exceptions++;
|
|
}
|
|
|
|
/**
|
|
* Accessor for the number of passes so far.
|
|
* @return integer Number of passes.
|
|
* @access public
|
|
*/
|
|
function getPassCount() {
|
|
return $this->_passes;
|
|
}
|
|
|
|
/**
|
|
* Accessor for the number of fails so far.
|
|
* @return integer Number of fails.
|
|
* @access public
|
|
*/
|
|
function getFailCount() {
|
|
return $this->_fails;
|
|
}
|
|
|
|
/**
|
|
* Accessor for the number of untrapped errors
|
|
* so far.
|
|
* @return integer Number of exceptions.
|
|
* @access public
|
|
*/
|
|
function getExceptionCount() {
|
|
return $this->_exceptions;
|
|
}
|
|
|
|
/**
|
|
* Paints a simple supplementary message.
|
|
* @param string $message Text to display.
|
|
* @access public
|
|
*/
|
|
function paintMessage($message) {
|
|
}
|
|
|
|
/**
|
|
* Paints a formatted ASCII message such as a
|
|
* variable dump.
|
|
* @param string $message Text to display.
|
|
* @access public
|
|
*/
|
|
function paintFormattedMessage($message) {
|
|
}
|
|
|
|
/**
|
|
* By default just ignores user generated events.
|
|
* @param string $type Event type as text.
|
|
* @param mixed $payload Message or object.
|
|
* @access public
|
|
*/
|
|
function paintSignal($type, &$payload) {
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Recipient of generated test messages that can display
|
|
* page footers and headers. Also keeps track of the
|
|
* test nesting. This is the main base class on which
|
|
* to build the finished test (page based) displays.
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
*/
|
|
class SimpleReporter extends SimpleScorer {
|
|
var $_test_stack;
|
|
var $_size;
|
|
var $_progress;
|
|
|
|
/**
|
|
* Starts the display with no results in.
|
|
* @access public
|
|
*/
|
|
function SimpleReporter() {
|
|
$this->SimpleScorer();
|
|
$this->_test_stack = array();
|
|
$this->_size = null;
|
|
$this->_progress = 0;
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a group test. Will also paint
|
|
* the page header and footer if this is the
|
|
* first test. Will stash the size if the first
|
|
* start.
|
|
* @param string $test_name Name of test that is starting.
|
|
* @param integer $size Number of test cases starting.
|
|
* @access public
|
|
*/
|
|
function paintGroupStart($test_name, $size) {
|
|
if (! isset($this->_size)) {
|
|
$this->_size = $size;
|
|
}
|
|
if (count($this->_test_stack) == 0) {
|
|
$this->paintHeader($test_name);
|
|
}
|
|
$this->_test_stack[] = $test_name;
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a group test. Will paint the page
|
|
* footer if the stack of tests has unwound.
|
|
* @param string $test_name Name of test that is ending.
|
|
* @param integer $progress Number of test cases ending.
|
|
* @access public
|
|
*/
|
|
function paintGroupEnd($test_name) {
|
|
array_pop($this->_test_stack);
|
|
if (count($this->_test_stack) == 0) {
|
|
$this->paintFooter($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test case. Will also paint
|
|
* the page header and footer if this is the
|
|
* first test. Will stash the size if the first
|
|
* start.
|
|
* @param string $test_name Name of test that is starting.
|
|
* @access public
|
|
*/
|
|
function paintCaseStart($test_name) {
|
|
if (! isset($this->_size)) {
|
|
$this->_size = 1;
|
|
}
|
|
if (count($this->_test_stack) == 0) {
|
|
$this->paintHeader($test_name);
|
|
}
|
|
$this->_test_stack[] = $test_name;
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test case. Will paint the page
|
|
* footer if the stack of tests has unwound.
|
|
* @param string $test_name Name of test that is ending.
|
|
* @access public
|
|
*/
|
|
function paintCaseEnd($test_name) {
|
|
$this->_progress++;
|
|
array_pop($this->_test_stack);
|
|
if (count($this->_test_stack) == 0) {
|
|
$this->paintFooter($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test method.
|
|
* @param string $test_name Name of test that is starting.
|
|
* @access public
|
|
*/
|
|
function paintMethodStart($test_name) {
|
|
$this->_test_stack[] = $test_name;
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test method. Will paint the page
|
|
* footer if the stack of tests has unwound.
|
|
* @param string $test_name Name of test that is ending.
|
|
* @access public
|
|
*/
|
|
function paintMethodEnd($test_name) {
|
|
array_pop($this->_test_stack);
|
|
}
|
|
|
|
/**
|
|
* Paints the test document header.
|
|
* @param string $test_name First test top level
|
|
* to start.
|
|
* @access public
|
|
* @abstract
|
|
*/
|
|
function paintHeader($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the test document footer.
|
|
* @param string $test_name The top level test.
|
|
* @access public
|
|
* @abstract
|
|
*/
|
|
function paintFooter($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Accessor for internal test stack. For
|
|
* subclasses that need to see the whole test
|
|
* history for display purposes.
|
|
* @return array List of methods in nesting order.
|
|
* @access public
|
|
*/
|
|
function getTestList() {
|
|
return $this->_test_stack;
|
|
}
|
|
|
|
/**
|
|
* Accessor for total test size in number
|
|
* of test cases. Null until the first
|
|
* test is started.
|
|
* @return integer Total number of cases at start.
|
|
* @access public
|
|
*/
|
|
function getTestCaseCount() {
|
|
return $this->_size;
|
|
}
|
|
|
|
/**
|
|
* Accessor for the number of test cases
|
|
* completed so far.
|
|
* @return integer Number of ended cases.
|
|
* @access public
|
|
*/
|
|
function getTestCaseProgress() {
|
|
return $this->_progress;
|
|
}
|
|
|
|
/**
|
|
* Static check for running in the comand line.
|
|
* @return boolean True if CLI.
|
|
* @access public
|
|
* @static
|
|
*/
|
|
function inCli() {
|
|
return php_sapi_name() == 'cli';
|
|
}
|
|
}
|
|
?>
|