Initial Commit
This commit is contained in:
285
database/php/pear/PHP/CodeCoverage/Report/HTML/Renderer.php
Normal file
285
database/php/pear/PHP/CodeCoverage/Report/HTML/Renderer.php
Normal file
@@ -0,0 +1,285 @@
|
||||
<?php
|
||||
/**
|
||||
* PHP_CodeCoverage
|
||||
*
|
||||
* Copyright (c) 2009-2013, Sebastian Bergmann <sebastian@phpunit.de>.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* * Neither the name of Sebastian Bergmann nor the names of his
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* @category PHP
|
||||
* @package CodeCoverage
|
||||
* @author Sebastian Bergmann <sebastian@phpunit.de>
|
||||
* @copyright 2009-2013 Sebastian Bergmann <sebastian@phpunit.de>
|
||||
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
|
||||
* @link http://github.com/sebastianbergmann/php-code-coverage
|
||||
* @since File available since Release 1.1.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Base class for PHP_CodeCoverage_Report_Node renderers.
|
||||
*
|
||||
* @category PHP
|
||||
* @package CodeCoverage
|
||||
* @author Sebastian Bergmann <sebastian@phpunit.de>
|
||||
* @copyright 2009-2013 Sebastian Bergmann <sebastian@phpunit.de>
|
||||
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
|
||||
* @link http://github.com/sebastianbergmann/php-code-coverage
|
||||
* @since Class available since Release 1.1.0
|
||||
*/
|
||||
abstract class PHP_CodeCoverage_Report_HTML_Renderer
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $templatePath;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $charset;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $generator;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $date;
|
||||
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
protected $lowUpperBound;
|
||||
|
||||
/**
|
||||
* @var integer
|
||||
*/
|
||||
protected $highLowerBound;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $templatePath
|
||||
* @param string $charset
|
||||
* @param string $generator
|
||||
* @param string $date
|
||||
* @param integer $lowUpperBound
|
||||
* @param integer $highLowerBound
|
||||
*/
|
||||
public function __construct($templatePath, $charset, $generator, $date, $lowUpperBound, $highLowerBound)
|
||||
{
|
||||
$this->templatePath = $templatePath;
|
||||
$this->charset = $charset;
|
||||
$this->generator = $generator;
|
||||
$this->date = $date;
|
||||
$this->lowUpperBound = $lowUpperBound;
|
||||
$this->highLowerBound = $highLowerBound;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Text_Template $template
|
||||
* @param array $data
|
||||
* @return string
|
||||
*/
|
||||
protected function renderItemTemplate(Text_Template $template, array $data)
|
||||
{
|
||||
$numSeperator = ' / ';
|
||||
$classesBar = ' ';
|
||||
$classesLevel = 'None';
|
||||
$classesNumber = ' ';
|
||||
|
||||
if (isset($data['numClasses']) && $data['numClasses'] > 0) {
|
||||
$classesLevel = $this->getColorLevel($data['testedClassesPercent']);
|
||||
|
||||
$classesNumber = $data['numTestedClasses'] . $numSeperator .
|
||||
$data['numClasses'];
|
||||
|
||||
$classesBar = $this->getCoverageBar(
|
||||
$data['testedClassesPercent']
|
||||
);
|
||||
}
|
||||
|
||||
$methodsBar = ' ';
|
||||
$methodsLevel = 'None';
|
||||
$methodsNumber = ' ';
|
||||
|
||||
if ($data['numMethods'] > 0) {
|
||||
$methodsLevel = $this->getColorLevel($data['testedMethodsPercent']);
|
||||
|
||||
$methodsNumber = $data['numTestedMethods'] . $numSeperator .
|
||||
$data['numMethods'];
|
||||
|
||||
$methodsBar = $this->getCoverageBar(
|
||||
$data['testedMethodsPercent']
|
||||
);
|
||||
}
|
||||
|
||||
$linesBar = ' ';
|
||||
$linesLevel = 'None';
|
||||
$linesNumber = ' ';
|
||||
|
||||
if ($data['numExecutableLines'] > 0) {
|
||||
$linesLevel = $this->getColorLevel($data['linesExecutedPercent']);
|
||||
|
||||
$linesNumber = $data['numExecutedLines'] . $numSeperator .
|
||||
$data['numExecutableLines'];
|
||||
|
||||
$linesBar = $this->getCoverageBar(
|
||||
$data['linesExecutedPercent']
|
||||
);
|
||||
}
|
||||
|
||||
$template->setVar(
|
||||
array(
|
||||
'icon' => isset($data['icon']) ? $data['icon'] : '',
|
||||
'crap' => isset($data['crap']) ? $data['crap'] : '',
|
||||
'name' => $data['name'],
|
||||
'lines_bar' => $linesBar,
|
||||
'lines_executed_percent' => $data['linesExecutedPercentAsString'],
|
||||
'lines_level' => $linesLevel,
|
||||
'lines_number' => $linesNumber,
|
||||
'methods_bar' => $methodsBar,
|
||||
'methods_tested_percent' => $data['testedMethodsPercentAsString'],
|
||||
'methods_level' => $methodsLevel,
|
||||
'methods_number' => $methodsNumber,
|
||||
'classes_bar' => $classesBar,
|
||||
'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '',
|
||||
'classes_level' => $classesLevel,
|
||||
'classes_number' => $classesNumber
|
||||
)
|
||||
);
|
||||
|
||||
return $template->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Text_Template $template
|
||||
* @param PHP_CodeCoverage_Report_Node $node
|
||||
*/
|
||||
protected function setCommonTemplateVariables(Text_Template $template, PHP_CodeCoverage_Report_Node $node)
|
||||
{
|
||||
$template->setVar(
|
||||
array(
|
||||
'id' => $node->getId(),
|
||||
'full_path' => $node->getPath(),
|
||||
'breadcrumbs' => $this->getBreadcrumbs($node),
|
||||
'charset' => $this->charset,
|
||||
'date' => $this->date,
|
||||
'version' => PHP_CodeCoverage_Version::id(),
|
||||
'php_version' => PHP_VERSION,
|
||||
'generator' => $this->generator,
|
||||
'low_upper_bound' => $this->lowUpperBound,
|
||||
'high_lower_bound' => $this->highLowerBound
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
protected function getBreadcrumbs(PHP_CodeCoverage_Report_Node $node)
|
||||
{
|
||||
$breadcrumbs = '';
|
||||
|
||||
$path = $node->getPathAsArray();
|
||||
|
||||
foreach ($path as $step) {
|
||||
if ($step !== $node) {
|
||||
$breadcrumbs .= $this->getInactiveBreadcrumb($step);
|
||||
} else {
|
||||
$breadcrumbs .= $this->getActiveBreadcrumb(
|
||||
$step,
|
||||
$node instanceof PHP_CodeCoverage_Report_Node_Directory
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $breadcrumbs;
|
||||
}
|
||||
|
||||
protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node, $isDirectory)
|
||||
{
|
||||
$buffer = sprintf(
|
||||
' <li class="active">%s</li>' . "\n",
|
||||
$node->getName()
|
||||
);
|
||||
|
||||
if ($isDirectory) {
|
||||
$buffer .= sprintf(
|
||||
' <li>(<a href="%s.dashboard.html">Dashboard</a>)</li>' . "\n",
|
||||
$node->getId()
|
||||
);
|
||||
}
|
||||
|
||||
return $buffer;
|
||||
}
|
||||
|
||||
protected function getInactiveBreadcrumb(PHP_CodeCoverage_Report_Node $node)
|
||||
{
|
||||
return sprintf(
|
||||
' <li><a href="%s.html">%s</a> <span class="divider">/</span></li>' . "\n",
|
||||
$node->getId(),
|
||||
$node->getName()
|
||||
);
|
||||
}
|
||||
|
||||
protected function getCoverageBar($percent)
|
||||
{
|
||||
$level = $this->getColorLevel($percent);
|
||||
|
||||
$template = new Text_Template(
|
||||
$this->templatePath . 'coverage_bar.html'
|
||||
);
|
||||
|
||||
$template->setVar(array('level' => $level, 'percent' => sprintf("%.2F", $percent)));
|
||||
|
||||
return $template->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $percent
|
||||
* @return string
|
||||
*/
|
||||
protected function getColorLevel($percent)
|
||||
{
|
||||
if ($percent < $this->lowUpperBound) {
|
||||
return 'danger';
|
||||
}
|
||||
|
||||
else if ($percent >= $this->lowUpperBound &&
|
||||
$percent < $this->highLowerBound) {
|
||||
return 'warning';
|
||||
}
|
||||
|
||||
else {
|
||||
return 'success';
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user