pictcode / lib / Cake / TestSuite / Coverage / TextCoverageReport.php @ f4a6dc2c
履歴 | 表示 | アノテート | ダウンロード (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 | }  |