1<?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 (https://cakephp.org) 8 * Copyright (c) Cake Software Foundation, Inc. (https://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. (https://cakefoundation.org) 15 * @link https://cakephp.org CakePHP(tm) Project 16 * @package Cake.TestSuite.Coverage 17 * @since CakePHP(tm) v 2.0 18 * @license https://opensource.org/licenses/mit-license.php MIT License 19 */ 20 21App::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 */ 28class 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} 65