pictcode / lib / Cake / TestSuite / Coverage / TextCoverageReport.php @ 635eef61
履歴 | 表示 | アノテート | ダウンロード (2.133 KB)
| 1 | 635eef61 | spyder1211 | <?php
|
|---|---|---|---|
| 2 | /**
|
||
| 3 | * Generates code coverage reports in Simple plain text from data obtained from PHPUnit
|
||
| 4 | *
|
||
| 5 | * PHP5
|
||
| 6 | *
|
||
| 7 | * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||
| 8 | * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||
| 9 | *
|
||
| 10 | * Licensed under The MIT License
|
||
| 11 | * For full copyright and license information, please see the LICENSE.txt
|
||
| 12 | * Redistributions of files must retain the above copyright notice.
|
||
| 13 | *
|
||
| 14 | * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||
| 15 | * @link http://cakephp.org CakePHP(tm) Project
|
||
| 16 | * @package Cake.TestSuite.Coverage
|
||
| 17 | * @since CakePHP(tm) v 2.0
|
||
| 18 | * @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||
| 19 | */
|
||
| 20 | |||
| 21 | App::uses('BaseCoverageReport', 'TestSuite/Coverage'); |
||
| 22 | |||
| 23 | /**
|
||
| 24 | * Generates code coverage reports in Simple plain text from data obtained from PHPUnit
|
||
| 25 | *
|
||
| 26 | * @package Cake.TestSuite.Coverage
|
||
| 27 | */
|
||
| 28 | class TextCoverageReport extends BaseCoverageReport { |
||
| 29 | |||
| 30 | /**
|
||
| 31 | * Generates report text to display.
|
||
| 32 | *
|
||
| 33 | * @return string compiled plain text report.
|
||
| 34 | */
|
||
| 35 | public function report() { |
||
| 36 | $pathFilter = $this->getPathFilter(); |
||
| 37 | $coverageData = $this->filterCoverageDataByPath($pathFilter); |
||
| 38 | if (empty($coverageData)) { |
||
| 39 | return 'No files to generate coverage for'; |
||
| 40 | } |
||
| 41 | $output = "\nCoverage Report:\n\n"; |
||
| 42 | foreach ($coverageData as $file => $coverageData) { |
||
| 43 | $fileData = file($file); |
||
| 44 | $output .= $this->generateDiff($file, $fileData, $coverageData); |
||
| 45 | } |
||
| 46 | return $output; |
||
| 47 | } |
||
| 48 | |||
| 49 | /**
|
||
| 50 | * Generates a 'diff' report for a file.
|
||
| 51 | * Since diffs are too big for plain text reports a simple file => % covered is done.
|
||
| 52 | *
|
||
| 53 | * @param string $filename Name of the file having coverage generated
|
||
| 54 | * @param array $fileLines File data as an array. See file() for how to get one of these.
|
||
| 55 | * @param array $coverageData Array of coverage data to use to generate HTML diffs with
|
||
| 56 | * @return string
|
||
| 57 | */
|
||
| 58 | public function generateDiff($filename, $fileLines, $coverageData) { |
||
| 59 | list($covered, $total) = $this->_calculateCoveredLines($fileLines, $coverageData); |
||
| 60 | $percentCovered = round(100 * $covered / $total, 2); |
||
| 61 | return "$filename : $percentCovered%\n"; |
||
| 62 | } |
||
| 63 | |||
| 64 | } |