summaryrefslogtreecommitdiff
path: root/tests/test_tools/simpletest/reporter.php
diff options
context:
space:
mode:
authorxue <>2006-07-16 01:50:23 +0000
committerxue <>2006-07-16 01:50:23 +0000
commitaf68030fcf0c266300feb2c100149ecadef7d364 (patch)
tree76b7c8ad5d8227870b9ef10c3e7b92a36336b320 /tests/test_tools/simpletest/reporter.php
parent4b78404c20490a615459267426ce9e6737bf4485 (diff)
Merge from 3.0 branch till 1264.
Diffstat (limited to 'tests/test_tools/simpletest/reporter.php')
-rw-r--r--tests/test_tools/simpletest/reporter.php178
1 files changed, 152 insertions, 26 deletions
diff --git a/tests/test_tools/simpletest/reporter.php b/tests/test_tools/simpletest/reporter.php
index 32125c9b..ea3895e3 100644
--- a/tests/test_tools/simpletest/reporter.php
+++ b/tests/test_tools/simpletest/reporter.php
@@ -3,7 +3,7 @@
* base include file for SimpleTest
* @package SimpleTest
* @subpackage UnitTester
- * @version $Id: reporter.php,v 1.33 2004/11/29 04:35:49 lastcraft Exp $
+ * @version $Id: reporter.php,v 1.36 2006/02/06 06:05:18 lastcraft Exp $
*/
/**#@+
@@ -11,7 +11,7 @@
*/
require_once(dirname(__FILE__) . '/scorer.php');
/**#@-*/
-
+
/**
* Sample minimal test displayer. Generates only
* failure messages and a pass count.
@@ -20,7 +20,7 @@
*/
class HtmlReporter extends SimpleReporter {
protected $_character_set;
-
+
/**
* Does nothing yet. The first output will
* be sent on the first test start. For use
@@ -31,7 +31,7 @@
$this->SimpleReporter();
$this->_character_set = $character_set;
}
-
+
/**
* Paints the top of the web page setting the
* title to the name of the starting test.
@@ -50,7 +50,7 @@
print "<h1>$test_name</h1>\n";
flush();
}
-
+
/**
* Send the headers necessary to ensure the page is
* reloaded on every request. Otherwise you could be
@@ -67,7 +67,7 @@
header("Pragma: no-cache");
}
}
-
+
/**
* Paints the CSS. Add additional styles here.
* @return string CSS code as text.
@@ -76,7 +76,7 @@
function _getCss() {
return ".fail { color: red; } pre { background-color: lightgray; }";
}
-
+
/**
* Paints the end of the test with a summary of
* the passes and failures.
@@ -96,7 +96,7 @@
print "</div>\n";
print "</body>\n</html>\n";
}
-
+
/**
* Paints the test failure with a breadcrumbs
* trail of the nesting test suites below the
@@ -113,22 +113,22 @@
print implode(" -&gt; ", $breadcrumb);
print " -&gt; " . $this->_htmlEntities($message) . "<br />\n";
}
-
+
/**
* Paints a PHP error or exception.
* @param string $message Message is ignored.
* @access public
* @abstract
*/
- function paintException($message) {
- parent::paintException($message);
+ function paintError($message) {
+ parent::paintError($message);
print "<span class=\"fail\">Exception</span>: ";
$breadcrumb = $this->getTestList();
array_shift($breadcrumb);
print implode(" -&gt; ", $breadcrumb);
print " -&gt; <strong>" . $this->_htmlEntities($message) . "</strong><br />\n";
}
-
+
/**
* Paints formatted text such as dumped variables.
* @param string $message Text to show.
@@ -137,7 +137,7 @@
function paintFormattedMessage($message) {
print '<pre>' . $this->_htmlEntities($message) . '</pre>';
}
-
+
/**
* Character set adjusted entity conversion.
* @param string $message Plain text or Unicode message.
@@ -148,7 +148,7 @@
return htmlentities($message, ENT_COMPAT, $this->_character_set);
}
}
-
+
/**
* Sample minimal test displayer. Generates only
* failure messages and a pass count. For command
@@ -159,7 +159,7 @@
* @subpackage UnitTester
*/
class TextReporter extends SimpleReporter {
-
+
/**
* Does nothing yet. The first output will
* be sent on the first test start.
@@ -168,7 +168,7 @@
function TextReporter() {
$this->SimpleReporter();
}
-
+
/**
* Paints the title only.
* @param string $test_name Name class of test.
@@ -181,7 +181,7 @@
print "$test_name\n";
flush();
}
-
+
/**
* Paints the end of the test with a summary of
* the passes and failures.
@@ -199,13 +199,12 @@
", Passes: " . $this->getPassCount() .
", Failures: " . $this->getFailCount() .
", Exceptions: " . $this->getExceptionCount() . "\n";
-
}
-
+
/**
* Paints the test failure as a stack trace.
- * @param string $message Failure message displayed in
- * the context of the other tests.
+ * @param string $message Failure message displayed in
+ * the context of the other tests.
* @access public
*/
function paintFail($message) {
@@ -216,18 +215,18 @@
print "\tin " . implode("\n\tin ", array_reverse($breadcrumb));
print "\n";
}
-
+
/**
* Paints a PHP error or exception.
* @param string $message Message is ignored.
* @access public
* @abstract
*/
- function paintException($message) {
- parent::paintException($message);
+ function paintError($message) {
+ parent::paintError($message);
print "Exception " . $this->getExceptionCount() . "!\n$message\n";
}
-
+
/**
* Paints formatted text such as dumped variables.
* @param string $message Text to show.
@@ -238,4 +237,131 @@
flush();
}
}
-?>
+
+ /**
+ * Runs just a single test group, a single case or
+ * even a single test within that case.
+ * @package SimpleTest
+ * @subpackage UnitTester
+ */
+ class SelectiveReporter extends SimpleReporterDecorator {
+ protected $_just_this_case =false;
+ protected $_just_this_test = false;
+ protected $_within_test_case = true;
+
+ /**
+ * Selects the test case or group to be run,
+ * and optionally a specific test.
+ * @param SimpleScorer $reporter Reporter to receive events.
+ * @param string $just_this_case Only this case or group will run.
+ * @param string $just_this_test Only this test method will run.
+ */
+ function SelectiveReporter($reporter, $just_this_case = false, $just_this_test = false) {
+ if (isset($just_this_case) && $just_this_case) {
+ $this->_just_this_case = strtolower($just_this_case);
+ $this->_within_test_case = false;
+ }
+ if (isset($just_this_test) && $just_this_test) {
+ $this->_just_this_test = strtolower($just_this_test);
+ }
+ $this->SimpleReporterDecorator($reporter);
+ }
+
+ /**
+ * Compares criteria to actual the case/group name.
+ * @param string $test_case The incoming test.
+ * @return boolean True if matched.
+ * @access protected
+ */
+ function _isCaseMatch($test_case) {
+ if ($this->_just_this_case) {
+ return $this->_just_this_case == strtolower($test_case);
+ }
+ return false;
+ }
+
+ /**
+ * Compares criteria to actual the test name.
+ * @param string $method The incoming test method.
+ * @return boolean True if matched.
+ * @access protected
+ */
+ function _isTestMatch($method) {
+ if ($this->_just_this_test) {
+ return $this->_just_this_test == strtolower($method);
+ }
+ return true;
+ }
+
+ /**
+ * Veto everything that doesn't match the method wanted.
+ * @param string $test_case Name of test case.
+ * @param string $method Name of test method.
+ * @return boolean True if test should be run.
+ * @access public
+ */
+ function shouldInvoke($test_case, $method) {
+ if ($this->_within_test_case && $this->_isTestMatch($method)) {
+ return $this->_reporter->shouldInvoke($test_case, $method);
+ }
+ return false;
+ }
+
+ /**
+ * Paints the start of a group test.
+ * @param string $test_case Name of test or other label.
+ * @param integer $size Number of test cases starting.
+ * @access public
+ */
+ function paintGroupStart($test_case, $size) {
+ if ($this->_isCaseMatch($test_case)) {
+ $this->_within_test_case = true;
+ }
+ if ($this->_within_test_case) {
+ $this->_reporter->paintGroupStart($test_case, $size);
+ }
+ }
+
+ /**
+ * Paints the end of a group test.
+ * @param string $test_case Name of test or other label.
+ * @access public
+ */
+ function paintGroupEnd($test_case) {
+ if ($this->_within_test_case) {
+ $this->_reporter->paintGroupEnd($test_case);
+ }
+ if ($this->_isCaseMatch($test_case)) {
+ $this->_within_test_case = false;
+ }
+ }
+
+ /**
+ * Paints the start of a test case.
+ * @param string $test_case Name of test or other label.
+ * @access public
+ */
+ function paintCaseStart($test_case) {
+ if ($this->_isCaseMatch($test_case)) {
+ $this->_within_test_case = true;
+ }
+ if ($this->_within_test_case) {
+ $this->_reporter->paintCaseStart($test_case);
+ }
+ }
+
+ /**
+ * Paints the end of a test case.
+ * @param string $test_case Name of test or other label.
+ * @access public
+ */
+ function paintCaseEnd($test_case) {
+ if ($this->_within_test_case) {
+ $this->_reporter->paintCaseEnd($test_case);
+ }
+ if ($this->_isCaseMatch($test_case)) {
+ $this->_within_test_case = false;
+ }
+ }
+ }
+?> \ No newline at end of file