summaryrefslogtreecommitdiff
path: root/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php')
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php90
1 files changed, 90 insertions, 0 deletions
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php
new file mode 100644
index 000000000..b566bce06
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php
@@ -0,0 +1,90 @@
+<?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\Xml;
+
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Project extends Node
+{
+ public function __construct(string $directory)
+ {
+ $this->init();
+ $this->setProjectSourceDirectory($directory);
+ }
+
+ public function projectSourceDirectory(): string
+ {
+ return $this->contextNode()->getAttribute('source');
+ }
+
+ public function buildInformation(): BuildInformation
+ {
+ $buildNode = $this->dom()->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'build'
+ )->item(0);
+
+ if (!$buildNode) {
+ $buildNode = $this->dom()->documentElement->appendChild(
+ $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'build'
+ )
+ );
+ }
+
+ return new BuildInformation($buildNode);
+ }
+
+ public function tests(): Tests
+ {
+ $testsNode = $this->contextNode()->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'tests'
+ )->item(0);
+
+ if (!$testsNode) {
+ $testsNode = $this->contextNode()->appendChild(
+ $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'tests'
+ )
+ );
+ }
+
+ return new Tests($testsNode);
+ }
+
+ public function asDom(): DOMDocument
+ {
+ return $this->dom();
+ }
+
+ private function init(): void
+ {
+ $dom = new DOMDocument;
+ $dom->loadXML('<?xml version="1.0" ?><phpunit xmlns="https://schema.phpunit.de/coverage/1.0"><build/><project/></phpunit>');
+
+ $this->setContextNode(
+ $dom->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'project'
+ )->item(0)
+ );
+ }
+
+ private function setProjectSourceDirectory(string $name): void
+ {
+ $this->contextNode()->setAttribute('source', $name);
+ }
+}