Skip to content

Commit 078c8d5

Browse files
Gabriel Zerbibtyler-ham
authored andcommitted
Display optional project name instead of absolute root in HTML renderer. Fixes sebastianbergmann#235 in sebastianbergmann/php-code-coverage
Indent with space phpdoc Conflicts: src/CodeCoverage/Report/HTML.php src/CodeCoverage/Report/HTML/Renderer.php src/CodeCoverage/Report/HTML/Renderer/Dashboard.php src/CodeCoverage/Report/HTML/Renderer/File.php
1 parent 2d7c03c commit 078c8d5

File tree

4 files changed

+73
-9
lines changed

4 files changed

+73
-9
lines changed

src/CodeCoverage/Report/HTML.php

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,31 @@ class PHP_CodeCoverage_Report_HTML
3535
*/
3636
private $highLowerBound;
3737

38+
/**
39+
* @var string
40+
*/
41+
private $absoluteRoot;
42+
/**
43+
* @var string
44+
*/
45+
private $projectPrefix;
46+
3847
/**
3948
* Constructor.
4049
*
4150
* @param int $lowUpperBound
4251
* @param int $highLowerBound
4352
* @param string $generator
53+
* @param string $absoluteRoot Optional: root path of the sources under analysis
54+
* @param string $projectPrefix Optional: name of project, to display as replacement for absoluteRoot
4455
*/
45-
public function __construct($lowUpperBound = 50, $highLowerBound = 90, $generator = '')
56+
public function __construct($lowUpperBound = 50, $highLowerBound = 90, $generator = '', $absoluteRoot = null, $projectPrefix = null)
4657
{
4758
$this->generator = $generator;
4859
$this->highLowerBound = $highLowerBound;
4960
$this->lowUpperBound = $lowUpperBound;
61+
$this->absoluteRoot = $absoluteRoot;
62+
$this->projectPrefix = $projectPrefix;
5063

5164
$this->templatePath = sprintf(
5265
'%s%sHTML%sRenderer%sTemplate%s',
@@ -79,23 +92,29 @@ public function process(PHP_CodeCoverage $coverage, $target)
7992
$this->generator,
8093
$date,
8194
$this->lowUpperBound,
82-
$this->highLowerBound
95+
$this->highLowerBound,
96+
$this->absoluteRoot,
97+
$this->projectPrefix
8398
);
8499

85100
$directory = new PHP_CodeCoverage_Report_HTML_Renderer_Directory(
86101
$this->templatePath,
87102
$this->generator,
88103
$date,
89104
$this->lowUpperBound,
90-
$this->highLowerBound
105+
$this->highLowerBound,
106+
$this->absoluteRoot,
107+
$this->projectPrefix
91108
);
92109

93110
$file = new PHP_CodeCoverage_Report_HTML_Renderer_File(
94111
$this->templatePath,
95112
$this->generator,
96113
$date,
97114
$this->lowUpperBound,
98-
$this->highLowerBound
115+
$this->highLowerBound,
116+
$this->absoluteRoot,
117+
$this->projectPrefix
99118
);
100119

101120
$directory->render($report, $target . 'index.html');

src/CodeCoverage/Report/HTML/Renderer.php

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ abstract class PHP_CodeCoverage_Report_HTML_Renderer
4747
*/
4848
protected $version;
4949

50+
/**
51+
* @var string
52+
*/
53+
protected $absoluteRoot;
54+
55+
/**
56+
* @var string
57+
*/
58+
protected $projectPrefix;
59+
5060
/**
5161
* Constructor.
5262
*
@@ -55,8 +65,10 @@ abstract class PHP_CodeCoverage_Report_HTML_Renderer
5565
* @param string $date
5666
* @param int $lowUpperBound
5767
* @param int $highLowerBound
68+
* @param string $absoluteRoot Optional: root path of the sources under analysis
69+
* @param string $projectPrefix Optional: name of project, to display as replacement for absoluteRoot
5870
*/
59-
public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound)
71+
public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound, $absoluteRoot = null, $projectPrefix = null)
6072
{
6173
$version = new SebastianBergmann\Version('2.2.2', dirname(dirname(dirname(dirname(__DIR__)))));
6274

@@ -66,6 +78,8 @@ public function __construct($templatePath, $generator, $date, $lowUpperBound, $h
6678
$this->lowUpperBound = $lowUpperBound;
6779
$this->highLowerBound = $highLowerBound;
6880
$this->version = $version->getVersion();
81+
$this->absoluteRoot = $absoluteRoot;
82+
$this->projectPrefix = $projectPrefix;
6983
}
7084

7185
/**
@@ -203,7 +217,7 @@ protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node)
203217
{
204218
$buffer = sprintf(
205219
' <li class="active">%s</li>' . "\n",
206-
$node->getName()
220+
$this->stripProjectPrefixFromNodeName($node)
207221
);
208222

209223
if ($node instanceof PHP_CodeCoverage_Report_Node_Directory) {
@@ -213,6 +227,31 @@ protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node)
213227
return $buffer;
214228
}
215229

230+
/**
231+
* An evolved version of PHP_CodeCoverage_Report_Node::getName(), which replaces
232+
* the optional absoluteRoot prefix in the node's full path, with specified
233+
* project name.
234+
* @param PHP_CodeCoverage_Report_Node $node
235+
* @return string
236+
*/
237+
protected function stripProjectPrefixFromNodeName(PHP_CodeCoverage_Report_Node $node)
238+
{
239+
if ($this->absoluteRoot) {
240+
return preg_replace(
241+
'#^' . $this->absoluteRoot . '#',
242+
$this->projectPrefix,
243+
$node->getName());
244+
}
245+
else
246+
return $node->getName();
247+
}
248+
249+
250+
/**
251+
* @param PHP_CodeCoverage_Report_Node $node
252+
* @param $pathToRoot
253+
* @return string
254+
*/
216255
protected function getInactiveBreadcrumb(PHP_CodeCoverage_Report_Node $node, $pathToRoot)
217256
{
218257
return sprintf(

src/CodeCoverage/Report/HTML/Renderer/Dashboard.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,9 @@ protected function getActiveBreadcrumb(PHP_CodeCoverage_Report_Node $node)
289289
return sprintf(
290290
' <li><a href="index.html">%s</a></li>' . "\n" .
291291
' <li class="active">(Dashboard)</li>' . "\n",
292-
$node->getName()
292+
//Do not always print the full absolute path of $node here:
293+
//optionally replace prefix
294+
$this->stripProjectPrefixFromNodeName($node)
293295
);
294296
}
295297
}

src/CodeCoverage/Report/HTML/Renderer/File.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,19 @@ class PHP_CodeCoverage_Report_HTML_Renderer_File extends PHP_CodeCoverage_Report
5050
* @param string $date
5151
* @param int $lowUpperBound
5252
* @param int $highLowerBound
53+
* @param string $absoluteRoot Optional: see parent
54+
* @param string $projectPrefix Optional: see parent
5355
*/
54-
public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound)
56+
public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound, $absoluteRoot = null, $projectPrefix = null)
5557
{
5658
parent::__construct(
5759
$templatePath,
5860
$generator,
5961
$date,
6062
$lowUpperBound,
61-
$highLowerBound
63+
$highLowerBound,
64+
$absoluteRoot,
65+
$projectPrefix
6266
);
6367

6468
$this->htmlspecialcharsFlags = ENT_COMPAT;

0 commit comments

Comments
 (0)