Chris@14
|
1 <?php
|
Chris@14
|
2 /*
|
Chris@14
|
3 * This file is part of the php-code-coverage package.
|
Chris@14
|
4 *
|
Chris@14
|
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
|
Chris@14
|
6 *
|
Chris@14
|
7 * For the full copyright and license information, please view the LICENSE
|
Chris@14
|
8 * file that was distributed with this source code.
|
Chris@14
|
9 */
|
Chris@14
|
10
|
Chris@14
|
11 namespace SebastianBergmann\CodeCoverage\Report\Xml;
|
Chris@14
|
12
|
Chris@14
|
13 class Project extends Node
|
Chris@14
|
14 {
|
Chris@14
|
15 /**
|
Chris@14
|
16 * @param string $directory
|
Chris@14
|
17 */
|
Chris@14
|
18 public function __construct($directory)
|
Chris@14
|
19 {
|
Chris@14
|
20 $this->init();
|
Chris@14
|
21 $this->setProjectSourceDirectory($directory);
|
Chris@14
|
22 }
|
Chris@14
|
23
|
Chris@14
|
24 private function init()
|
Chris@14
|
25 {
|
Chris@14
|
26 $dom = new \DOMDocument();
|
Chris@14
|
27 $dom->loadXML('<?xml version="1.0" ?><phpunit xmlns="http://schema.phpunit.de/coverage/1.0"><build/><project/></phpunit>');
|
Chris@14
|
28
|
Chris@14
|
29 $this->setContextNode(
|
Chris@14
|
30 $dom->getElementsByTagNameNS(
|
Chris@14
|
31 'http://schema.phpunit.de/coverage/1.0',
|
Chris@14
|
32 'project'
|
Chris@14
|
33 )->item(0)
|
Chris@14
|
34 );
|
Chris@14
|
35 }
|
Chris@14
|
36
|
Chris@14
|
37 private function setProjectSourceDirectory($name)
|
Chris@14
|
38 {
|
Chris@14
|
39 $this->getContextNode()->setAttribute('source', $name);
|
Chris@14
|
40 }
|
Chris@14
|
41
|
Chris@14
|
42 /**
|
Chris@14
|
43 * @return string
|
Chris@14
|
44 */
|
Chris@14
|
45 public function getProjectSourceDirectory()
|
Chris@14
|
46 {
|
Chris@14
|
47 return $this->getContextNode()->getAttribute('source');
|
Chris@14
|
48 }
|
Chris@14
|
49
|
Chris@14
|
50 /**
|
Chris@14
|
51 * @return BuildInformation
|
Chris@14
|
52 */
|
Chris@14
|
53 public function getBuildInformation()
|
Chris@14
|
54 {
|
Chris@14
|
55 $buildNode = $this->getDom()->getElementsByTagNameNS(
|
Chris@14
|
56 'http://schema.phpunit.de/coverage/1.0',
|
Chris@14
|
57 'build'
|
Chris@14
|
58 )->item(0);
|
Chris@14
|
59
|
Chris@14
|
60 if (!$buildNode) {
|
Chris@14
|
61 $buildNode = $this->getDom()->documentElement->appendChild(
|
Chris@14
|
62 $this->getDom()->createElementNS(
|
Chris@14
|
63 'http://schema.phpunit.de/coverage/1.0',
|
Chris@14
|
64 'build'
|
Chris@14
|
65 )
|
Chris@14
|
66 );
|
Chris@14
|
67 }
|
Chris@14
|
68
|
Chris@14
|
69 return new BuildInformation($buildNode);
|
Chris@14
|
70 }
|
Chris@14
|
71
|
Chris@14
|
72 public function getTests()
|
Chris@14
|
73 {
|
Chris@14
|
74 $testsNode = $this->getContextNode()->getElementsByTagNameNS(
|
Chris@14
|
75 'http://schema.phpunit.de/coverage/1.0',
|
Chris@14
|
76 'tests'
|
Chris@14
|
77 )->item(0);
|
Chris@14
|
78
|
Chris@14
|
79 if (!$testsNode) {
|
Chris@14
|
80 $testsNode = $this->getContextNode()->appendChild(
|
Chris@14
|
81 $this->getDom()->createElementNS(
|
Chris@14
|
82 'http://schema.phpunit.de/coverage/1.0',
|
Chris@14
|
83 'tests'
|
Chris@14
|
84 )
|
Chris@14
|
85 );
|
Chris@14
|
86 }
|
Chris@14
|
87
|
Chris@14
|
88 return new Tests($testsNode);
|
Chris@14
|
89 }
|
Chris@14
|
90
|
Chris@14
|
91 public function asDom()
|
Chris@14
|
92 {
|
Chris@14
|
93 return $this->getDom();
|
Chris@14
|
94 }
|
Chris@14
|
95 }
|