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 use SebastianBergmann\Environment\Runtime;
|
Chris@14
|
14
|
Chris@14
|
15 class BuildInformation
|
Chris@14
|
16 {
|
Chris@14
|
17 /**
|
Chris@14
|
18 * @var \DOMElement
|
Chris@14
|
19 */
|
Chris@14
|
20 private $contextNode;
|
Chris@14
|
21
|
Chris@14
|
22 /**
|
Chris@14
|
23 * @param \DOMElement $contextNode
|
Chris@14
|
24 */
|
Chris@14
|
25 public function __construct(\DOMElement $contextNode)
|
Chris@14
|
26 {
|
Chris@14
|
27 $this->contextNode = $contextNode;
|
Chris@14
|
28 }
|
Chris@14
|
29
|
Chris@14
|
30 /**
|
Chris@14
|
31 * @param Runtime $runtime
|
Chris@14
|
32 */
|
Chris@14
|
33 public function setRuntimeInformation(Runtime $runtime)
|
Chris@14
|
34 {
|
Chris@14
|
35 $runtimeNode = $this->getNodeByName('runtime');
|
Chris@14
|
36
|
Chris@14
|
37 $runtimeNode->setAttribute('name', $runtime->getName());
|
Chris@14
|
38 $runtimeNode->setAttribute('version', $runtime->getVersion());
|
Chris@14
|
39 $runtimeNode->setAttribute('url', $runtime->getVendorUrl());
|
Chris@14
|
40
|
Chris@14
|
41 $driverNode = $this->getNodeByName('driver');
|
Chris@14
|
42 if ($runtime->isHHVM()) {
|
Chris@14
|
43 $driverNode->setAttribute('name', 'hhvm');
|
Chris@14
|
44 $driverNode->setAttribute('version', \constant('HHVM_VERSION'));
|
Chris@14
|
45
|
Chris@14
|
46 return;
|
Chris@14
|
47 }
|
Chris@14
|
48
|
Chris@14
|
49 if ($runtime->hasPHPDBGCodeCoverage()) {
|
Chris@14
|
50 $driverNode->setAttribute('name', 'phpdbg');
|
Chris@14
|
51 $driverNode->setAttribute('version', \constant('PHPDBG_VERSION'));
|
Chris@14
|
52 }
|
Chris@14
|
53
|
Chris@14
|
54 if ($runtime->hasXdebug()) {
|
Chris@14
|
55 $driverNode->setAttribute('name', 'xdebug');
|
Chris@14
|
56 $driverNode->setAttribute('version', \phpversion('xdebug'));
|
Chris@14
|
57 }
|
Chris@14
|
58 }
|
Chris@14
|
59
|
Chris@14
|
60 /**
|
Chris@14
|
61 * @param $name
|
Chris@14
|
62 *
|
Chris@14
|
63 * @return \DOMElement
|
Chris@14
|
64 */
|
Chris@14
|
65 private function getNodeByName($name)
|
Chris@14
|
66 {
|
Chris@14
|
67 $node = $this->contextNode->getElementsByTagNameNS(
|
Chris@14
|
68 'http://schema.phpunit.de/coverage/1.0',
|
Chris@14
|
69 $name
|
Chris@14
|
70 )->item(0);
|
Chris@14
|
71
|
Chris@14
|
72 if (!$node) {
|
Chris@14
|
73 $node = $this->contextNode->appendChild(
|
Chris@14
|
74 $this->contextNode->ownerDocument->createElementNS(
|
Chris@14
|
75 'http://schema.phpunit.de/coverage/1.0',
|
Chris@14
|
76 $name
|
Chris@14
|
77 )
|
Chris@14
|
78 );
|
Chris@14
|
79 }
|
Chris@14
|
80
|
Chris@14
|
81 return $node;
|
Chris@14
|
82 }
|
Chris@14
|
83
|
Chris@14
|
84 /**
|
Chris@14
|
85 * @param \DateTime $date
|
Chris@14
|
86 */
|
Chris@14
|
87 public function setBuildTime(\DateTime $date)
|
Chris@14
|
88 {
|
Chris@14
|
89 $this->contextNode->setAttribute('time', $date->format('D M j G:i:s T Y'));
|
Chris@14
|
90 }
|
Chris@14
|
91
|
Chris@14
|
92 /**
|
Chris@14
|
93 * @param string $phpUnitVersion
|
Chris@14
|
94 * @param string $coverageVersion
|
Chris@14
|
95 */
|
Chris@14
|
96 public function setGeneratorVersions($phpUnitVersion, $coverageVersion)
|
Chris@14
|
97 {
|
Chris@14
|
98 $this->contextNode->setAttribute('phpunit', $phpUnitVersion);
|
Chris@14
|
99 $this->contextNode->setAttribute('coverage', $coverageVersion);
|
Chris@14
|
100 }
|
Chris@14
|
101 }
|