Chris@14: Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: namespace SebastianBergmann\CodeCoverage\Report\Xml; Chris@14: Chris@14: class Project extends Node Chris@14: { Chris@14: /** Chris@14: * @param string $directory Chris@14: */ Chris@14: public function __construct($directory) Chris@14: { Chris@14: $this->init(); Chris@14: $this->setProjectSourceDirectory($directory); Chris@14: } Chris@14: Chris@14: private function init() Chris@14: { Chris@14: $dom = new \DOMDocument(); Chris@14: $dom->loadXML(''); Chris@14: Chris@14: $this->setContextNode( Chris@14: $dom->getElementsByTagNameNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'project' Chris@14: )->item(0) Chris@14: ); Chris@14: } Chris@14: Chris@14: private function setProjectSourceDirectory($name) Chris@14: { Chris@14: $this->getContextNode()->setAttribute('source', $name); Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return string Chris@14: */ Chris@14: public function getProjectSourceDirectory() Chris@14: { Chris@14: return $this->getContextNode()->getAttribute('source'); Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return BuildInformation Chris@14: */ Chris@14: public function getBuildInformation() Chris@14: { Chris@14: $buildNode = $this->getDom()->getElementsByTagNameNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'build' Chris@14: )->item(0); Chris@14: Chris@14: if (!$buildNode) { Chris@14: $buildNode = $this->getDom()->documentElement->appendChild( Chris@14: $this->getDom()->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'build' Chris@14: ) Chris@14: ); Chris@14: } Chris@14: Chris@14: return new BuildInformation($buildNode); Chris@14: } Chris@14: Chris@14: public function getTests() Chris@14: { Chris@14: $testsNode = $this->getContextNode()->getElementsByTagNameNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'tests' Chris@14: )->item(0); Chris@14: Chris@14: if (!$testsNode) { Chris@14: $testsNode = $this->getContextNode()->appendChild( Chris@14: $this->getDom()->createElementNS( Chris@14: 'http://schema.phpunit.de/coverage/1.0', Chris@14: 'tests' Chris@14: ) Chris@14: ); Chris@14: } Chris@14: Chris@14: return new Tests($testsNode); Chris@14: } Chris@14: Chris@14: public function asDom() Chris@14: { Chris@14: return $this->getDom(); Chris@14: } Chris@14: }