diff cake/tests/lib/reporter/cake_text_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_text_reporter.php	Sun Jul 24 21:08:31 2011 +0900
@@ -0,0 +1,198 @@
+<?php
+/**
+ * CakeTextReporter contains reporting features used for plain text based output
+ *
+ * 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
+ */
+include_once dirname(__FILE__) . DS . 'cake_base_reporter.php';
+
+/**
+ * CakeTextReporter contains reporting features used for plain text based output
+ *
+ * @package cake
+ * @subpackage cake.tests.lib
+ */
+class CakeTextReporter extends CakeBaseReporter {
+
+/**
+ * Sets the text/plain header if the test is not a CLI test.
+ *
+ * @return void
+ */
+	function paintDocumentStart() {
+		if (!SimpleReporter::inCli()) {
+			header('Content-type: text/plain');
+		}
+	}
+
+/**
+ * Paints the end of the test with a summary of
+ * the passes and failures.
+ *
+ * @param string $test_name Name class of test.
+ * @return void
+ * @access public
+ */
+	function paintFooter($test_name) {
+		if ($this->getFailCount() + $this->getExceptionCount() == 0) {
+			echo "OK\n";
+		} else {
+			echo "FAILURES!!!\n";
+		}
+		echo "Test cases run: " . $this->getTestCaseProgress() .
+				"/" . $this->getTestCaseCount() .
+				", Passes: " . $this->getPassCount() .
+				", Failures: " . $this->getFailCount() .
+				", Exceptions: " . $this->getExceptionCount() . "\n";
+
+		echo 'Time taken by tests (in seconds): ' . $this->_timeDuration . "\n";
+		if (function_exists('memory_get_peak_usage')) {
+			echo 'Peak memory use: (in bytes): ' . number_format(memory_get_peak_usage()) . "\n";
+		}
+		if (
+			isset($this->params['codeCoverage']) && 
+			$this->params['codeCoverage'] && 
+			class_exists('CodeCoverageManager')
+		) {
+			CodeCoverageManager::report();
+		}
+	}
+
+/**
+ * Paints the title only.
+ *
+ * @param string $test_name Name class of test.
+ * @return void
+ * @access public
+ */
+	function paintHeader($test_name) {
+		$this->paintDocumentStart();
+		echo "$test_name\n";
+		flush();
+	}
+
+/**
+ * Paints the test failure as a stack trace.
+ *
+ * @param string $message Failure message displayed in
+ *    the context of the other tests.
+ * @return void
+ * @access public
+ */
+	function paintFail($message) {
+		parent::paintFail($message);
+		echo $this->getFailCount() . ") $message\n";
+		$breadcrumb = $this->getTestList();
+		array_shift($breadcrumb);
+		echo "\tin " . implode("\n\tin ", array_reverse($breadcrumb));
+		echo "\n";
+	}
+
+/**
+ * Paints a PHP error.
+ *
+ * @param string $message Message to be shown.
+ * @return void
+ * @access public
+ */
+	function paintError($message) {
+		parent::paintError($message);
+		echo "Exception " . $this->getExceptionCount() . "!\n$message\n";
+		$breadcrumb = $this->getTestList();
+		array_shift($breadcrumb);
+		echo "\tin " . implode("\n\tin ", array_reverse($breadcrumb));
+		echo "\n";
+	}
+
+/**
+ * Paints a PHP exception.
+ *
+ * @param Exception $exception Exception to describe.
+ * @return void
+ * @access public
+ */
+	function paintException($exception) {
+		parent::paintException($exception);
+		$message = 'Unexpected exception of type [' . get_class($exception) .
+				'] with message ['. $exception->getMessage() .
+				'] in ['. $exception->getFile() .
+				' line ' . $exception->getLine() . ']';
+		echo "Exception " . $this->getExceptionCount() . "!\n$message\n";
+		$breadcrumb = $this->getTestList();
+		array_shift($breadcrumb);
+		echo "\tin " . implode("\n\tin ", array_reverse($breadcrumb));
+		echo "\n";
+	}
+
+/**
+ * Prints the message for skipping tests.
+ *
+ * @param string $message Text of skip condition.
+ * @return void
+ * @access public
+ */
+	function paintSkip($message) {
+		parent::paintSkip($message);
+		echo "Skip: $message\n";
+	}
+
+/**
+ * Paints formatted text such as dumped variables.
+ *
+ * @param string $message Text to show.
+ * @return void
+ * @access public
+ */
+	function paintFormattedMessage($message) {
+		echo "$message\n";
+		flush();
+	}
+
+/**
+ * Generate a test case list in plain text.
+ * Creates as series of url's for tests that can be run.
+ * One case per line.
+ *
+ * @return void
+ */
+	function testCaseList() {
+		$testCases = parent::testCaseList();
+		$app = $this->params['app'];
+		$plugin = $this->params['plugin'];
+
+		$buffer = "Core Test Cases:\n";
+		$urlExtra = '';
+		if ($app) {
+			$buffer = "App Test Cases:\n";
+			$urlExtra = '&app=true';
+		} elseif ($plugin) {
+			$buffer = Inflector::humanize($plugin) . " Test Cases:\n";
+			$urlExtra = '&plugin=' . $plugin;
+		}
+
+		if (1 > count($testCases)) {
+			$buffer .= "EMPTY";
+			echo $buffer;
+		}
+
+		foreach ($testCases as $testCaseFile => $testCase) {
+			$buffer .= $_SERVER['SERVER_NAME'] . $this->baseUrl() ."?case=" . $testCase . "&output=text"."\n";
+		}
+
+		$buffer .= "\n";
+		echo $buffer;
+	}
+}