pictcode / lib / Cake / TestSuite / Reporter / CakeTextReporter.php @ 40928d1c
履歴 | 表示 | アノテート | ダウンロード (4.427 KB)
| 1 | 635eef61 | spyder1211 | <?php
|
|---|---|---|---|
| 2 | /**
|
||
| 3 | * CakeTextReporter contains reporting features used for plain text based output
|
||
| 4 | *
|
||
| 5 | * CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
|
||
| 6 | * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||
| 7 | *
|
||
| 8 | * Licensed under The MIT License
|
||
| 9 | * For full copyright and license information, please see the LICENSE.txt
|
||
| 10 | * Redistributions of files must retain the above copyright notice
|
||
| 11 | *
|
||
| 12 | * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||
| 13 | * @link http://cakephp.org CakePHP(tm) Project
|
||
| 14 | * @since CakePHP(tm) v 1.3
|
||
| 15 | * @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||
| 16 | */
|
||
| 17 | |||
| 18 | App::uses('CakeBaseReporter', 'TestSuite/Reporter'); |
||
| 19 | App::uses('TextCoverageReport', 'TestSuite/Coverage'); |
||
| 20 | |||
| 21 | /**
|
||
| 22 | * CakeTextReporter contains reporting features used for plain text based output
|
||
| 23 | *
|
||
| 24 | * @package Cake.TestSuite.Reporter
|
||
| 25 | */
|
||
| 26 | class CakeTextReporter extends CakeBaseReporter { |
||
| 27 | |||
| 28 | /**
|
||
| 29 | * Sets the text/plain header if the test is not a CLI test.
|
||
| 30 | *
|
||
| 31 | * @return void
|
||
| 32 | */
|
||
| 33 | public function paintDocumentStart() { |
||
| 34 | if (!headers_sent()) { |
||
| 35 | header('Content-type: text/plain'); |
||
| 36 | } |
||
| 37 | } |
||
| 38 | |||
| 39 | /**
|
||
| 40 | * Paints a pass
|
||
| 41 | *
|
||
| 42 | * @return void
|
||
| 43 | */
|
||
| 44 | public function paintPass() { |
||
| 45 | echo '.'; |
||
| 46 | } |
||
| 47 | |||
| 48 | /**
|
||
| 49 | * Paints a failing test.
|
||
| 50 | *
|
||
| 51 | * @param PHPUnit_Framework_AssertionFailedError $message Failure object displayed in
|
||
| 52 | * the context of the other tests.
|
||
| 53 | * @return void
|
||
| 54 | */
|
||
| 55 | public function paintFail($message) { |
||
| 56 | $context = $message->getTrace(); |
||
| 57 | $realContext = $context[3]; |
||
| 58 | $context = $context[2]; |
||
| 59 | |||
| 60 | printf(
|
||
| 61 | "FAIL on line %s\n%s in\n%s %s()\n\n",
|
||
| 62 | $context['line'], $message->toString(), $context['file'], $realContext['function'] |
||
| 63 | ); |
||
| 64 | } |
||
| 65 | |||
| 66 | /**
|
||
| 67 | * Paints the end of the test with a summary of
|
||
| 68 | * the passes and failures.
|
||
| 69 | *
|
||
| 70 | * @param PHPUnit_Framework_TestResult $result Result object
|
||
| 71 | * @return void
|
||
| 72 | */
|
||
| 73 | public function paintFooter($result) { |
||
| 74 | if ($result->failureCount() + $result->errorCount()) { |
||
| 75 | echo "FAILURES!!!\n"; |
||
| 76 | } else {
|
||
| 77 | echo "\nOK\n"; |
||
| 78 | } |
||
| 79 | |||
| 80 | echo "Test cases run: " . $result->count() . |
||
| 81 | "/" . ($result->count() - $result->skippedCount()) . |
||
| 82 | ', Passes: ' . $this->numAssertions . |
||
| 83 | ', Failures: ' . $result->failureCount() . |
||
| 84 | ', Exceptions: ' . $result->errorCount() . "\n"; |
||
| 85 | |||
| 86 | echo 'Time: ' . $result->time() . " seconds\n"; |
||
| 87 | echo 'Peak memory: ' . number_format(memory_get_peak_usage()) . " bytes\n"; |
||
| 88 | |||
| 89 | if (isset($this->params['codeCoverage']) && $this->params['codeCoverage']) { |
||
| 90 | $coverage = $result->getCodeCoverage()->getSummary(); |
||
| 91 | echo $this->paintCoverage($coverage); |
||
| 92 | } |
||
| 93 | } |
||
| 94 | |||
| 95 | /**
|
||
| 96 | * Paints the title only.
|
||
| 97 | *
|
||
| 98 | * @return void
|
||
| 99 | */
|
||
| 100 | public function paintHeader() { |
||
| 101 | $this->paintDocumentStart();
|
||
| 102 | flush();
|
||
| 103 | } |
||
| 104 | |||
| 105 | /**
|
||
| 106 | * Paints a PHP exception.
|
||
| 107 | *
|
||
| 108 | * @param Exception $exception Exception to describe.
|
||
| 109 | * @return void
|
||
| 110 | */
|
||
| 111 | public function paintException($exception) { |
||
| 112 | $message = 'Unexpected exception of type [' . get_class($exception) . |
||
| 113 | '] with message [' . $exception->getMessage() . |
||
| 114 | '] in [' . $exception->getFile() . |
||
| 115 | ' line ' . $exception->getLine() . ']'; |
||
| 116 | echo $message . "\n\n"; |
||
| 117 | } |
||
| 118 | |||
| 119 | /**
|
||
| 120 | * Prints the message for skipping tests.
|
||
| 121 | *
|
||
| 122 | * @param string $message Text of skip condition.
|
||
| 123 | * @return void
|
||
| 124 | */
|
||
| 125 | public function paintSkip($message) { |
||
| 126 | printf("Skip: %s\n", $message->getMessage()); |
||
| 127 | } |
||
| 128 | |||
| 129 | /**
|
||
| 130 | * Paints formatted text such as dumped variables.
|
||
| 131 | *
|
||
| 132 | * @param string $message Text to show.
|
||
| 133 | * @return void
|
||
| 134 | */
|
||
| 135 | public function paintFormattedMessage($message) { |
||
| 136 | echo "$message\n"; |
||
| 137 | flush();
|
||
| 138 | } |
||
| 139 | |||
| 140 | /**
|
||
| 141 | * Generate a test case list in plain text.
|
||
| 142 | * Creates as series of URLs for tests that can be run.
|
||
| 143 | * One case per line.
|
||
| 144 | *
|
||
| 145 | * @return void
|
||
| 146 | */
|
||
| 147 | public function testCaseList() { |
||
| 148 | $testCases = parent::testCaseList(); |
||
| 149 | $app = $this->params['app']; |
||
| 150 | $plugin = $this->params['plugin']; |
||
| 151 | |||
| 152 | $buffer = "Core Test Cases:\n"; |
||
| 153 | if ($app) { |
||
| 154 | $buffer = "App Test Cases:\n"; |
||
| 155 | } elseif ($plugin) { |
||
| 156 | $buffer = Inflector::humanize($plugin) . " Test Cases:\n"; |
||
| 157 | } |
||
| 158 | |||
| 159 | if (count($testCases) < 1) { |
||
| 160 | $buffer .= 'EMPTY'; |
||
| 161 | echo $buffer; |
||
| 162 | } |
||
| 163 | |||
| 164 | foreach ($testCases as $testCase) { |
||
| 165 | $buffer .= $_SERVER['SERVER_NAME'] . $this->baseUrl() . "?case=" . $testCase . "&output=text\n"; |
||
| 166 | } |
||
| 167 | |||
| 168 | $buffer .= "\n"; |
||
| 169 | echo $buffer; |
||
| 170 | } |
||
| 171 | |||
| 172 | /**
|
||
| 173 | * Generates a Text summary of the coverage data.
|
||
| 174 | *
|
||
| 175 | * @param array $coverage Array of coverage data.
|
||
| 176 | * @return void
|
||
| 177 | */
|
||
| 178 | public function paintCoverage($coverage) { |
||
| 179 | $reporter = new TextCoverageReport($coverage, $this); |
||
| 180 | echo $reporter->report(); |
||
| 181 | } |
||
| 182 | |||
| 183 | } |