public function generate() { $document = new fDOMDocument(); // summary $root = $document->createElement('phpact'); $root->setAttribute('project', $this->summary->getProjectName()); $root->setAttribute('base', $this->summary->getBaseVersion()); $root->setAttribute('challenger', $this->summary->getChallengerVersion()); $root->setAttribute('date', date('c', $this->summary->getTime())); $root->setAttribute('signature', strip_tags($this->summary->getSignature())); // difference list $grouped = $this->groupDifferences($this->differences, Difference::UNIT_NAME); foreach ($grouped as $unitName => $differences) { /* @var $differences \RenanBr\PhpAct\Difference\DifferenceCollection */ $family = $differences->current()->getTag(Difference::UNIT_FAMILY); $unitElement = $root->createElement($family); $unitElement->setAttribute('name', $unitName); $this->append($unitElement, 'constant', $differences, Difference::CONSTANT_NAME); $this->append($unitElement, 'member', $differences, Difference::MEMBER_NAME); $this->append($unitElement, 'method', $differences, Difference::METHOD_NAME); $root->appendChild($unitElement); } $document->appendChild($root); $document->preserveWhiteSpace = false; $document->formatOutput = true; return $document->saveXML(); }
/** * @param string $name * @param \SplFileInfo $file */ public function __construct($name = NULL, \SplFileInfo $file = NULL) { if ($this->rootName === NULL) { throw new UnitObjectException('No or invalid rootname set', UnitObjectException::InvalidRootname); } $this->dom = new fDOMDocument('1.0', 'UTF-8'); $this->dom->registerNamespace('phpdox', self::XMLNS); $this->rootNode = $this->dom->createElementNS(self::XMLNS, $this->rootName); $this->dom->appendChild($this->rootNode); if ($name !== NULL) { $this->setName($name, $this->rootNode); } if ($file !== NULL) { $this->setFileHeader($file); } $this->setAbstract(FALSE); $this->setFinal(FALSE); }
/** * @ covers TheSeer\phpDox\DocBlock\Parser::__construct * @ covers TheSeer\phpDox\DocBlock\Parser::parse * * @dataProvider docblockSources */ public function testParse($src) { $expected = new fDOMDocument(); $dir = __DIR__ . '/../../data/docbock/'; $block = file_get_contents($dir . $src); $expected->load($dir . $src . '.xml'); $factory = new Factory(); $parser = new Parser($factory); $result = $parser->parse($block, array()); $this->assertInstanceOf('TheSeer\\phpDox\\DocBlock\\DocBlock', $result); $dom = new fDOMDocument(); $dom->appendChild($result->asDom($dom)); $this->assertEquals($expected->documentElement, $dom->documentElement); }
/** * Merge all files. * * @param string $directory * @param Finder $finder * * @return fDOMDocument */ private function mergeFiles($directory, Finder $finder) { $outXml = new fDOMDocument(); $outXml->formatOutput = true; $outTestSuites = $outXml->createElement('testsuites'); $outXml->appendChild($outTestSuites); $outTestSuite = $outXml->createElement('testsuite'); $outTestSuites->appendChild($outTestSuite); $tests = 0; $assertions = 0; $failures = 0; $errors = 0; $time = 0; /** @var SplFileInfo $file */ foreach ($finder as $file) { if ($this->isFileEmpty($file)) { continue; } $inXml = $this->loadFile($file->getRealpath()); foreach ($inXml->query('//testsuites/testsuite') as $inElement) { $inName = $inElement->getAttribute('name'); $outName = $inName; $suffix = 2; while ($outTestSuite->query('//testsuite[@name="' . $outName . '"]')->length !== 0) { $outName = $inName . '_' . $suffix; $suffix++; } $outElement = $outXml->importNode($inElement, true); $outElement->setAttribute('name', $outName); $outTestSuite->appendChild($outElement); $tests += $inElement->getAttribute('tests'); $assertions += $inElement->getAttribute('assertions'); $failures += $inElement->getAttribute('failures'); $errors += $inElement->getAttribute('errors'); $time += $inElement->getAttribute('time'); } } $outTestSuite->setAttribute('name', $directory); $outTestSuite->setAttribute('tests', $tests); $outTestSuite->setAttribute('assertions', $assertions); $outTestSuite->setAttribute('failures', $failures); $outTestSuite->setAttribute('errors', $errors); $outTestSuite->setAttribute('time', $time); return $outXml; }