Exemple #1
0
 /**
  * @return \DOMDocument
  */
 private function createLog()
 {
     $params = $this->logParams;
     $out = new \DOMDocument();
     $out->preserveWhiteSpace = true;
     $out->appendChild($out->createElement("testsuites"));
     $rootSuite = $out->createElement("testsuite");
     $out->documentElement->appendChild($rootSuite);
     foreach ($params as $param) {
         $rootSuite->setAttribute($param, "0");
     }
     /** @var \DOMElement[] $outSuites */
     $outSuites = [];
     foreach ($this->finder->getSuites() as $suite) {
         $outSuite = $out->createElement("testsuite");
         $outSuite->setAttribute("name", $suite);
         $outSuites[] = $outSuite;
         $br = $out->createTextNode("\n  ");
         $rootSuite->appendChild($br);
         $rootSuite->appendChild($outSuite);
     }
     $totalSuites = [];
     foreach ($this->logsFileList as $file) {
         $d = new \DOMDocument();
         $d->load($file);
         $suites = $d->getElementsByTagName("testsuite")->item(0);
         // no tests in file
         if (!$suites) {
             continue;
         }
         $children = $suites->childNodes;
         for ($i = 0; $i < $children->length; $i++) {
             /** @var \DOMElement $node */
             $node = $children->item($i);
             if ($node->nodeName == "testsuite") {
                 $file = str_replace(dirname(realpath($this->params->getConfigPath())) . "/", "", $node->getAttribute("file"));
                 $id = $this->finder->getSuiteIdByFile($file);
                 $newNode = $out->importNode($node, true);
                 if (is_int($id)) {
                     $outSuite = $outSuites[$id];
                 } else {
                     $outSuite = $rootSuite;
                 }
                 $br = $out->createTextNode("\n    ");
                 $outSuite->appendChild($br);
                 $outSuite->appendChild($newNode);
                 foreach ($params as $param) {
                     if (!isset($totalSuites[$id][$param])) {
                         $totalSuites[$id][$param] = 0;
                     }
                     $totalSuites[$id][$param] += (double) $node->getAttribute($param);
                 }
             }
         }
     }
     $overall = [];
     foreach ($totalSuites as $suite) {
         foreach ($params as $param) {
             if (!isset($overall[$param])) {
                 $overall[$param] = 0;
             }
             $overall[$param] += $suite[$param];
         }
     }
     foreach ($overall as $param => $value) {
         $rootSuite->setAttribute($param, $value);
     }
     return $out;
 }