added coverage-renderer option
This commit is contained in:
parent
0557fc93dd
commit
aca040b78a
@ -96,14 +96,14 @@
|
|||||||
protected function postRun() {
|
protected function postRun() {
|
||||||
$html = $this->getOption('coverage-html');
|
$html = $this->getOption('coverage-html');
|
||||||
$console = $this->getOption('coverage-console');
|
$console = $this->getOption('coverage-console');
|
||||||
if ($html || $console) {
|
if ($html !== null || $console === true) {
|
||||||
$coverage = xdebug_get_code_coverage();
|
$coverage = xdebug_get_code_coverage();
|
||||||
xdebug_stop_code_coverage();
|
xdebug_stop_code_coverage();
|
||||||
if ($console !== null) {
|
if ($console === true) {
|
||||||
CoverageReporter::createConsoleReport($coverage);
|
CoverageReporter::createConsoleReport($coverage);
|
||||||
}
|
}
|
||||||
if ($html !== null) {
|
if ($html !== null) {
|
||||||
CoverageReporter::createHtmlReport($html, $coverage);
|
CoverageReporter::createHtmlReport($html, $coverage, $this->getOption('coverage-renderer'));
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($coverage);
|
unset($coverage);
|
||||||
@ -171,6 +171,13 @@
|
|||||||
throw new TUnitException('Could not create directory: ' . $options['coverage-html']);
|
throw new TUnitException('Could not create directory: ' . $options['coverage-html']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//check the renderer
|
||||||
|
if ($options['coverage-renderer'] !== null) {
|
||||||
|
if (!in_array($options['coverage-renderer'], array('png'))) {
|
||||||
|
throw new InvalidOptionException('coverage-renderer', 'unknown renderer: ' . $options['renderer']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -186,11 +193,11 @@
|
|||||||
*/
|
*/
|
||||||
public function getAllowableOptions() {
|
public function getAllowableOptions() {
|
||||||
return array(
|
return array(
|
||||||
'bootstrap' => null,
|
'bootstrap' => null,
|
||||||
'recursive' => false,
|
'recursive' => false,
|
||||||
//'coverage-xml' => null,
|
'coverage-html' => null,
|
||||||
'coverage-html' => null,
|
'coverage-renderer' => null,
|
||||||
'coverage-console' => false
|
'coverage-console' => false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
class CoveragePieChart extends ezcGraphPieChart {
|
class CoveragePieChart extends ezcGraphPieChart {
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct($renderer) {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
$this->palette = new CoveragePalette();
|
$this->palette = new CoveragePalette();
|
||||||
@ -50,6 +50,7 @@
|
|||||||
$this->options->label = '%2$s (%3$.1f%%)';
|
$this->options->label = '%2$s (%3$.1f%%)';
|
||||||
$this->legend->position = ezcGraph::BOTTOM;
|
$this->legend->position = ezcGraph::BOTTOM;
|
||||||
|
|
||||||
|
//use renderer here...
|
||||||
$this->renderer = new CoverageRenderer();
|
$this->renderer = new CoverageRenderer();
|
||||||
|
|
||||||
$this->renderer->options->pieChartRotation = .6;
|
$this->renderer->options->pieChartRotation = .6;
|
@ -110,7 +110,7 @@
|
|||||||
fwrite(STDOUT, " Executable: " . ($totloc - $totdloc) . " (" . round($totcloc / ($totloc - $dloc) * 100, 2) . "%)\n");
|
fwrite(STDOUT, " Executable: " . ($totloc - $totdloc) . " (" . round($totcloc / ($totloc - $dloc) * 100, 2) . "%)\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function createHtmlReport($coverageDir, array $coverageData) {
|
public static function createHtmlReport($coverageDir, array $coverageData, $renderer = null) {
|
||||||
$coverageData = CoverageFilter::filter($coverageData);
|
$coverageData = CoverageFilter::filter($coverageData);
|
||||||
|
|
||||||
$baseDir = array();
|
$baseDir = array();
|
||||||
@ -135,10 +135,10 @@
|
|||||||
$classData = self::parseCoverageData($coverageData);
|
$classData = self::parseCoverageData($coverageData);
|
||||||
|
|
||||||
foreach ($coverageData as $file => $data) {
|
foreach ($coverageData as $file => $data) {
|
||||||
self::writeHtmlFile($file, $baseDir, $coverageDir, $classData[$file], $data);
|
self::writeHtmlFile($file, $baseDir, $coverageDir, $classData[$file], $data, $renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
self::writeHtmlDirectories($coverageDir, $baseDir, $coverageData);
|
self::writeHtmlDirectories($coverageDir, $baseDir, $coverageData, $renderer);
|
||||||
|
|
||||||
//copy css over
|
//copy css over
|
||||||
$template = dirname(__FILE__) . DIRECTORY_SEPARATOR . self::TEMPLATE_DIR . DIRECTORY_SEPARATOR;
|
$template = dirname(__FILE__) . DIRECTORY_SEPARATOR . self::TEMPLATE_DIR . DIRECTORY_SEPARATOR;
|
||||||
@ -146,7 +146,7 @@
|
|||||||
copy($template . 'tunit.js', $coverageDir . DIRECTORY_SEPARATOR . 'tunit.js');
|
copy($template . 'tunit.js', $coverageDir . DIRECTORY_SEPARATOR . 'tunit.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function writeHtmlFile($sourceFile, $baseDir, $coverageDir, array $classData, array $coverageData) {
|
private static function writeHtmlFile($sourceFile, $baseDir, $coverageDir, array $classData, array $coverageData, $renderer) {
|
||||||
//summary view
|
//summary view
|
||||||
$fileCoverage = '';
|
$fileCoverage = '';
|
||||||
$classCoverage = '';
|
$classCoverage = '';
|
||||||
@ -178,7 +178,9 @@
|
|||||||
$methodCoverage .= "<tr class=\"method-coverage\"><th> <a href=\"#line-$methodStartLine\">$methodDeclaration</a></th>";
|
$methodCoverage .= "<tr class=\"method-coverage\"><th> <a href=\"#line-$methodStartLine\">$methodDeclaration</a></th>";
|
||||||
$methodCoverage .= "<td class=\"coverage-ratio\" style=\"background-color: $percentageData[1]\">$methodData[cloc] / " . ($methodData['loc'] - $methodData['dloc']) . "</td>";
|
$methodCoverage .= "<td class=\"coverage-ratio\" style=\"background-color: $percentageData[1]\">$methodData[cloc] / " . ($methodData['loc'] - $methodData['dloc']) . "</td>";
|
||||||
$methodCoverage .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td></tr>\n";
|
$methodCoverage .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td></tr>\n";
|
||||||
$methodCoverage .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($methodData['loc'], $methodData['dloc'], $methodData['cloc']) . '"/></td></tr>';
|
if ($renderer !== null) {
|
||||||
|
$methodCoverage .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($methodData['loc'], $methodData['dloc'], $methodData['cloc'], $renderer) . '"/></td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
$classLoc += $methodData['loc'];
|
$classLoc += $methodData['loc'];
|
||||||
$classDloc += $methodData['dloc'];
|
$classDloc += $methodData['dloc'];
|
||||||
@ -190,7 +192,9 @@
|
|||||||
$classCoverage .= "<tr class=\"class-coverage\"><th> <a href=\"#line-$classStartLine\">$class</a></th>";
|
$classCoverage .= "<tr class=\"class-coverage\"><th> <a href=\"#line-$classStartLine\">$class</a></th>";
|
||||||
$classCoverage .= "<td class=\"coverage-ratio\" style=\"background-color: $percentageData[1]\">$classCloc / " . ($classLoc - $classDloc) . "</td>";
|
$classCoverage .= "<td class=\"coverage-ratio\" style=\"background-color: $percentageData[1]\">$classCloc / " . ($classLoc - $classDloc) . "</td>";
|
||||||
$classCoverage .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td></tr>\n";
|
$classCoverage .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td></tr>\n";
|
||||||
$classCoverage .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($classLoc, $classDloc, $classCloc) . '"/></td></tr>';
|
if ($renderer !== null) {
|
||||||
|
$classCoverage .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($classLoc, $classDloc, $classCloc, $renderer) . '"/></td></tr>';
|
||||||
|
}
|
||||||
$classCoverage .= $methodCoverage;
|
$classCoverage .= $methodCoverage;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,7 +206,9 @@
|
|||||||
$fileCoverage = "<tr class=\"file-coverage\"><th>$sourceFile</th>";
|
$fileCoverage = "<tr class=\"file-coverage\"><th>$sourceFile</th>";
|
||||||
$fileCoverage .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$tcloc / " . ($tloc - $tdloc) . "</td>";
|
$fileCoverage .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$tcloc / " . ($tloc - $tdloc) . "</td>";
|
||||||
$fileCoverage .= "<td class=\"coverage-ratio\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td></tr>\n";
|
$fileCoverage .= "<td class=\"coverage-ratio\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td></tr>\n";
|
||||||
$fileCoverage .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($tloc, $tdloc, $tcloc) . '"/></td></tr>';
|
if ($renderer !== null) {
|
||||||
|
$fileCoverage .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($tloc, $tdloc, $tcloc, $renderer) . '"/></td></tr>';
|
||||||
|
}
|
||||||
$fileCoverage .= $classCoverage;
|
$fileCoverage .= $classCoverage;
|
||||||
unset($classCoverage, $methodCoverage, $classData, $refClass);
|
unset($classCoverage, $methodCoverage, $classData, $refClass);
|
||||||
|
|
||||||
@ -280,7 +286,7 @@
|
|||||||
return file_put_contents($newFile, $template);
|
return file_put_contents($newFile, $template);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function writeHtmlDirectories($coverageDir, $baseDir, array $coverageData) {
|
private static function writeHtmlDirectories($coverageDir, $baseDir, array $coverageData, $renderer) {
|
||||||
$dirData = array();
|
$dirData = array();
|
||||||
foreach ($coverageData as $file => $data) {
|
foreach ($coverageData as $file => $data) {
|
||||||
$dirs = preg_split('@\\' . DIRECTORY_SEPARATOR . '@', str_replace($baseDir, '', dirname($file) . DIRECTORY_SEPARATOR), -1, PREG_SPLIT_NO_EMPTY);
|
$dirs = preg_split('@\\' . DIRECTORY_SEPARATOR . '@', str_replace($baseDir, '', dirname($file) . DIRECTORY_SEPARATOR), -1, PREG_SPLIT_NO_EMPTY);
|
||||||
@ -345,7 +351,9 @@
|
|||||||
$info .= '<td class="coverage-ratio" style="background-color: ' . $percentageData[1] . '">' . $subdata['cloc'] . ' / ' . ($subdata['loc'] - $subdata['dloc']) . '</td>';
|
$info .= '<td class="coverage-ratio" style="background-color: ' . $percentageData[1] . '">' . $subdata['cloc'] . ' / ' . ($subdata['loc'] - $subdata['dloc']) . '</td>';
|
||||||
$info .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td>";
|
$info .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td>";
|
||||||
$info .= "</tr>\n";
|
$info .= "</tr>\n";
|
||||||
$info .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($subdata['loc'], $subdata['dloc'], $subdata['cloc']) . '"/></td></tr>';
|
if ($renderer !== null) {
|
||||||
|
$info .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($subdata['loc'], $subdata['dloc'], $subdata['cloc'], $renderer) . '"/></td></tr>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//regular files in current directory
|
//regular files in current directory
|
||||||
@ -355,7 +363,9 @@
|
|||||||
$info .= '<td class="coverage-ratio" style="background-color: ' . $percentageData[1] . '">' . $fileData['cloc'] . ' / ' . ($fileData['loc'] - $fileData['dloc']) . '</td>';
|
$info .= '<td class="coverage-ratio" style="background-color: ' . $percentageData[1] . '">' . $fileData['cloc'] . ' / ' . ($fileData['loc'] - $fileData['dloc']) . '</td>';
|
||||||
$info .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td>";
|
$info .= "<td class=\"coverage-percentage\" style=\"background-color: $percentageData[1]\">$percentageData[0]%</td>";
|
||||||
$info .= "</tr>\n";
|
$info .= "</tr>\n";
|
||||||
$info .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($fileData['loc'], $fileData['dloc'], $fileData['cloc']) . '"/></td></tr>';
|
if ($renderer !== null) {
|
||||||
|
$info .= '<tr class="coverage-graph"><td colspan="3"><img alt="Code Coverage results" src="' . self::getDataUri($fileData['loc'], $fileData['dloc'], $fileData['cloc'], $renderer) . '"/></td></tr>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$temp = str_replace(
|
$temp = str_replace(
|
||||||
@ -446,8 +456,8 @@
|
|||||||
return $color;
|
return $color;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function getDataUri($loc, $dloc, $cloc) {
|
private static function getDataUri($loc, $dloc, $cloc, $renderer) {
|
||||||
$graph = new CoveragePieChart();
|
$graph = new CoveragePieChart($renderer);
|
||||||
return $graph->renderToDataUri(300, 225, $loc - $cloc - $dloc, $dloc, $cloc);
|
return $graph->renderToDataUri(300, 225, $loc - $cloc - $dloc, $dloc, $cloc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
/**
|
/**
|
||||||
* Autoload manifest
|
* Autoload manifest
|
||||||
*
|
*
|
||||||
* Autogenerated by manifester.php on 2009-06-30 20:59:11
|
* Autogenerated by manifester.php on 2009-06-30 23:05:13
|
||||||
*
|
*
|
||||||
* @package TUnit
|
* @package TUnit
|
||||||
* @version 0.5.0
|
* @version 0.5.0
|
||||||
@ -20,11 +20,11 @@
|
|||||||
'ConsoleListener' => 'TUnit/framework/listeners/ConsoleListener.php',
|
'ConsoleListener' => 'TUnit/framework/listeners/ConsoleListener.php',
|
||||||
'ConsoleTestRunner' => 'TUnit/framework/ConsoleTestRunner.php',
|
'ConsoleTestRunner' => 'TUnit/framework/ConsoleTestRunner.php',
|
||||||
'Constraint' => 'TUnit/framework/constraints/Constraint.php',
|
'Constraint' => 'TUnit/framework/constraints/Constraint.php',
|
||||||
'CoverageDriver' => 'TUnit/framework/reporting/CoveragePieChart.php',
|
'CoverageDriver' => 'TUnit/framework/reporting/CoverageGraphs.php',
|
||||||
'CoverageFilter' => 'TUnit/framework/reporting/CoverageFilter.php',
|
'CoverageFilter' => 'TUnit/framework/reporting/CoverageFilter.php',
|
||||||
'CoveragePalette' => 'TUnit/framework/reporting/CoveragePieChart.php',
|
'CoveragePalette' => 'TUnit/framework/reporting/CoverageGraphs.php',
|
||||||
'CoveragePieChart' => 'TUnit/framework/reporting/CoveragePieChart.php',
|
'CoveragePieChart' => 'TUnit/framework/reporting/CoverageGraphs.php',
|
||||||
'CoverageRenderer' => 'TUnit/framework/reporting/CoveragePieChart.php',
|
'CoverageRenderer' => 'TUnit/framework/reporting/CoverageGraphs.php',
|
||||||
'CoverageReporter' => 'TUnit/framework/reporting/CoverageReporter.php',
|
'CoverageReporter' => 'TUnit/framework/reporting/CoverageReporter.php',
|
||||||
'DefaultConstraint' => 'TUnit/framework/constraints/DefaultConstraint.php',
|
'DefaultConstraint' => 'TUnit/framework/constraints/DefaultConstraint.php',
|
||||||
'EmptyConstraint' => 'TUnit/framework/constraints/SimpleConstraints.php',
|
'EmptyConstraint' => 'TUnit/framework/constraints/SimpleConstraints.php',
|
||||||
|
@ -43,14 +43,14 @@
|
|||||||
|
|
||||||
global $switches;
|
global $switches;
|
||||||
$switches = new CliSwitchCollection();
|
$switches = new CliSwitchCollection();
|
||||||
$switches->addSwitch(new CliSwitch(null, null, true, '<files>', 'Files and/or directories to parse for test cases'))
|
$switches->addSwitch(new CliSwitch(null, null, true, '<files>', 'Files and/or directories to parse for test cases'))
|
||||||
->addSwitch(new CliSwitch('help', 'h', false, null, 'Display this help message (also --usage)'))
|
->addSwitch(new CliSwitch('help', 'h', false, null, 'Display this help message (also --usage)'))
|
||||||
->addSwitch(new CliSwitch('usage', null, false, null, 'Display this help message'))
|
->addSwitch(new CliSwitch('usage', null, false, null, 'Display this help message'))
|
||||||
->addSwitch(new CliSwitch('recursive', null, false, null, 'Recurse into subdirectories'))
|
->addSwitch(new CliSwitch('recursive', null, false, null, 'Recurse into subdirectories'))
|
||||||
->addSwitch(new CliSwitch('bootstrap', 'b', false, 'file', 'File to include before tests are run'))
|
->addSwitch(new CliSwitch('bootstrap', 'b', false, 'file', 'File to include before tests are run'))
|
||||||
//->addSwitch(new CliSwitch('coverage-xml', null, false, 'file', 'Generate code coverage report in XML clover format (requires xdebug)'))
|
->addSwitch(new CliSwitch('coverage-html', null, false, 'dir', 'Generate code coverage report in HTML (requires xdebug, optionally uses ezComponents)'))
|
||||||
->addSwitch(new CliSwitch('coverage-html', null, false, 'dir', 'Generate code coverage report in HTML (requires xdebug, optionally uses ezComponents)'))
|
->addSwitch(new CliSwitch('coverage-renderer', null, false, 'type', 'Use with coverage-html to render code coverage graphs; png is the only type supported right now'))
|
||||||
->addSwitch(new CliSwitch('coverage-console', null, false, null, 'Generate code coverage report suitable for console viewing'));
|
->addSwitch(new CliSwitch('coverage-console', null, false, null, 'Generate code coverage report suitable for console viewing'));
|
||||||
|
|
||||||
array_shift($argv);
|
array_shift($argv);
|
||||||
$args = Cli::parseArgs($argv, $switches);
|
$args = Cli::parseArgs($argv, $switches);
|
||||||
|
Loading…
Reference in New Issue
Block a user