summaryrefslogtreecommitdiff
path: root/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php')
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php113
1 files changed, 113 insertions, 0 deletions
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php
new file mode 100644
index 000000000..faacbc31d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php
@@ -0,0 +1,113 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use function count;
+use function sprintf;
+use function str_repeat;
+use SebastianBergmann\CodeCoverage\Node\AbstractNode as Node;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+use SebastianBergmann\Template\Template;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Directory extends Renderer
+{
+ public function render(DirectoryNode $node, string $file): void
+ {
+ $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'directory_branch.html' : 'directory.html');
+ $template = new Template($templateName, '{{', '}}');
+
+ $this->setCommonTemplateVariables($template, $node);
+
+ $items = $this->renderItem($node, true);
+
+ foreach ($node->directories() as $item) {
+ $items .= $this->renderItem($item);
+ }
+
+ foreach ($node->files() as $item) {
+ $items .= $this->renderItem($item);
+ }
+
+ $template->setVar(
+ [
+ 'id' => $node->id(),
+ 'items' => $items,
+ ]
+ );
+
+ $template->renderTo($file);
+ }
+
+ private function renderItem(Node $node, bool $total = false): string
+ {
+ $data = [
+ 'numClasses' => $node->numberOfClassesAndTraits(),
+ 'numTestedClasses' => $node->numberOfTestedClassesAndTraits(),
+ 'numMethods' => $node->numberOfFunctionsAndMethods(),
+ 'numTestedMethods' => $node->numberOfTestedFunctionsAndMethods(),
+ 'linesExecutedPercent' => $node->percentageOfExecutedLines()->asFloat(),
+ 'linesExecutedPercentAsString' => $node->percentageOfExecutedLines()->asString(),
+ 'numExecutedLines' => $node->numberOfExecutedLines(),
+ 'numExecutableLines' => $node->numberOfExecutableLines(),
+ 'branchesExecutedPercent' => $node->percentageOfExecutedBranches()->asFloat(),
+ 'branchesExecutedPercentAsString' => $node->percentageOfExecutedBranches()->asString(),
+ 'numExecutedBranches' => $node->numberOfExecutedBranches(),
+ 'numExecutableBranches' => $node->numberOfExecutableBranches(),
+ 'pathsExecutedPercent' => $node->percentageOfExecutedPaths()->asFloat(),
+ 'pathsExecutedPercentAsString' => $node->percentageOfExecutedPaths()->asString(),
+ 'numExecutedPaths' => $node->numberOfExecutedPaths(),
+ 'numExecutablePaths' => $node->numberOfExecutablePaths(),
+ 'testedMethodsPercent' => $node->percentageOfTestedFunctionsAndMethods()->asFloat(),
+ 'testedMethodsPercentAsString' => $node->percentageOfTestedFunctionsAndMethods()->asString(),
+ 'testedClassesPercent' => $node->percentageOfTestedClassesAndTraits()->asFloat(),
+ 'testedClassesPercentAsString' => $node->percentageOfTestedClassesAndTraits()->asString(),
+ ];
+
+ if ($total) {
+ $data['name'] = 'Total';
+ } else {
+ $up = str_repeat('../', count($node->pathAsArray()) - 2);
+ $data['icon'] = sprintf('<img src="%s_icons/file-code.svg" class="octicon" />', $up);
+
+ if ($node instanceof DirectoryNode) {
+ $data['name'] = sprintf(
+ '<a href="%s/index.html">%s</a>',
+ $node->name(),
+ $node->name()
+ );
+ $data['icon'] = sprintf('<img src="%s_icons/file-directory.svg" class="octicon" />', $up);
+ } elseif ($this->hasBranchCoverage) {
+ $data['name'] = sprintf(
+ '%s <a class="small" href="%s.html">[line]</a> <a class="small" href="%s_branch.html">[branch]</a> <a class="small" href="%s_path.html">[path]</a>',
+ $node->name(),
+ $node->name(),
+ $node->name(),
+ $node->name()
+ );
+ } else {
+ $data['name'] = sprintf(
+ '<a href="%s.html">%s</a>',
+ $node->name(),
+ $node->name()
+ );
+ }
+ }
+
+ $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'directory_item_branch.html' : 'directory_item.html');
+
+ return $this->renderItemTemplate(
+ new Template($templateName, '{{', '}}'),
+ $data
+ );
+ }
+}