Viewing file: ResultPrinter.php (10.02 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/** * PHP Version 5 * * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * * Neither the name of Sebastian Bergmann nor the names of his * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @category Testing * @package PHPUnit2 * @author Sebastian Bergmann <sb@sebastian-bergmann.de> * @copyright 2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de> * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version CVS: $Id: ResultPrinter.php,v 1.20.2.5 2005/12/17 16:04:57 sebastian Exp $ * @link http://pear.php.net/package/PHPUnit2 * @since File available since Release 2.0.0 */
require_once 'PHPUnit2/Framework/TestListener.php'; require_once 'PHPUnit2/Framework/TestFailure.php'; require_once 'PHPUnit2/Util/Filter.php'; require_once 'PHPUnit2/Util/Printer.php';
/** * Prints the result of a TextUI TestRunner run. * * @category Testing * @package PHPUnit2 * @author Sebastian Bergmann <sb@sebastian-bergmann.de> * @copyright 2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de> * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @version Release: 2.3.6 * @link http://pear.php.net/package/PHPUnit2 * @since Class available since Release 2.0.0 */ class PHPUnit2_TextUI_ResultPrinter extends PHPUnit2_Util_Printer implements PHPUnit2_Framework_TestListener { /** * @var integer * @access private */ private $column = 0;
/** * @var boolean * @access private */ private $lastTestFailed = FALSE;
/** * @param PHPUnit2_Framework_TestResult $result * @param float $runTime * @access public */ public function printResult(PHPUnit2_Framework_TestResult $result, $timeElapsed) { $this->printHeader($timeElapsed); $this->printErrors($result); $this->printFailures($result); $this->printIncompletes($result); $this->printFooter($result); }
/** * @param array $defects * @param integer $count * @param string $type * @access protected */ protected function printDefects($defects, $count, $type) { if ($count == 0) { return; }
$this->write( sprintf( "There %s %d %s%s:\n",
($count == 1) ? 'was' : 'were', $count, $type, ($count == 1) ? '' : 's' ) );
$i = 1;
foreach ($defects as $defect) { $this->printDefect($defect, $i++); } }
/** * @param PHPUnit2_Framework_TestFailure $defect * @param integer $count * @access protected */ protected function printDefect(PHPUnit2_Framework_TestFailure $defect, $count) { $this->printDefectHeader($defect, $count); $this->printDefectTrace($defect); }
/** * @param PHPUnit2_Framework_TestFailure $defect * @param integer $count * @access protected */ protected function printDefectHeader(PHPUnit2_Framework_TestFailure $defect, $count) { $this->write( sprintf( "%d) %s\n",
$count, $defect->failedTest()->toString() ) ); }
/** * @param PHPUnit2_Framework_TestFailure $defect * @access protected */ protected function printDefectTrace(PHPUnit2_Framework_TestFailure $defect) { $e = $defect->thrownException(); $message = method_exists($e, 'toString') ? $e->toString() : $e->getMessage();
$this->write($message . "\n");
$this->write( PHPUnit2_Util_Filter::getFilteredStacktrace( $defect->thrownException() ) ); }
/** * @param PHPUnit2_Framework_TestResult $result * @access protected */ protected function printErrors(PHPUnit2_Framework_TestResult $result) { $this->printDefects($result->errors(), $result->errorCount(), 'error'); }
/** * @param PHPUnit2_Framework_TestResult $result * @access protected */ protected function printFailures(PHPUnit2_Framework_TestResult $result) { $this->printDefects($result->failures(), $result->failureCount(), 'failure'); }
/** * @param PHPUnit2_Framework_TestResult $result * @access protected */ protected function printIncompletes(PHPUnit2_Framework_TestResult $result) { $this->printDefects($result->notImplemented(), $result->notImplementedCount(), 'incomplete test case'); }
/** * @param float $timeElapsed * @access protected */ protected function printHeader($timeElapsed) { $this->write( sprintf( "\n\nTime: %s\n",
$timeElapsed ) ); }
/** * @param PHPUnit2_Framework_TestResult $result * @access protected */ protected function printFooter(PHPUnit2_Framework_TestResult $result) { if ($result->allCompletlyImplemented() && $result->wasSuccessful()) { $this->write( sprintf( "\nOK (%d test%s)\n",
$result->runCount(), ($result->runCount() == 1) ? '' : 's' ) ); } else if (!$result->allCompletlyImplemented() && $result->wasSuccessful()) { $this->write( sprintf( "\nOK, but incomplete test cases!!!\nTests run: %d, Incomplete Tests: %d.\n",
$result->runCount(), $result->notImplementedCount() ) ); } else { $this->write( sprintf( "\nFAILURES!!!\nTests run: %d, Failures: %d, Errors: %d, Incomplete Tests: %d.\n",
$result->runCount(), $result->failureCount(), $result->errorCount(), $result->notImplementedCount() ) ); } }
/** * @access public */ public function printWaitPrompt() { $this->write("\n<RETURN> to continue\n"); }
/** * An error occurred. * * @param PHPUnit2_Framework_Test $test * @param Exception $e * @access public */ public function addError(PHPUnit2_Framework_Test $test, Exception $e) { $this->write('E'); $this->nextColumn();
$this->lastTestFailed = TRUE; }
/** * A failure occurred. * * @param PHPUnit2_Framework_Test $test * @param PHPUnit2_Framework_AssertionFailedError $e * @access public */ public function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $e) { $this->write('F'); $this->nextColumn();
$this->lastTestFailed = TRUE; }
/** * Incomplete test. * * @param PHPUnit2_Framework_Test $test * @param Exception $e * @access public */ public function addIncompleteTest(PHPUnit2_Framework_Test $test, Exception $e) { $this->write('I'); $this->nextColumn();
$this->lastTestFailed = TRUE; }
/** * A testsuite started. * * @param PHPUnit2_Framework_TestSuite $suite * @access public * @since Method available since Release 2.2.0 */ public function startTestSuite(PHPUnit2_Framework_TestSuite $suite) { }
/** * A testsuite ended. * * @param PHPUnit2_Framework_TestSuite $suite * @access public * @since Method available since Release 2.2.0 */ public function endTestSuite(PHPUnit2_Framework_TestSuite $suite) { }
/** * A test started. * * @param PHPUnit2_Framework_Test $test * @access public */ public function startTest(PHPUnit2_Framework_Test $test) { }
/** * A test ended. * * @param PHPUnit2_Framework_Test $test * @access public */ public function endTest(PHPUnit2_Framework_Test $test) { if (!$this->lastTestFailed) { $this->write('.'); $this->nextColumn(); }
$this->lastTestFailed = FALSE; }
/** * @access protected */ protected function nextColumn() { if ($this->column++ >= 40) { $this->column = 0; $this->write("\n"); } } }
/* * Local variables: * tab-width: 4 * c-basic-offset: 4 * c-hanging-comment-ender-p: nil * End: */ ?>
|