function renderSummary(Aggregator $agg, array $results, $basePath, $istest = false, $total = 1, $covered = 1, $dead = 1) { $output = new \XMLWriter(); if ($istest) { if (!$output->openUri($this->savePath . '/index-' . str_replace($istest, '/', '@') . '.html')) { throw new Exception('Cannot render test ' . $istest . ' summary, opening XML failed'); } } else { if (!$output->openUri($this->savePath . '/index.html')) { throw new Exception('Cannot render test summary, opening XML failed'); } } $output->setIndentString(' '); $output->setIndent(true); $output->startElement('html'); $output->startElement('head'); if ($istest) { $output->writeElement('title', 'Code Coverage Summary [' . $istest . ']'); } else { $output->writeElement('title', 'Code Coverage Summary'); } $output->startElement('link'); $output->writeAttribute('href', 'cover.css'); $output->writeAttribute('rel', 'stylesheet'); $output->writeAttribute('type', 'text/css'); $output->endElement(); $output->endElement(); $output->startElement('body'); if ($istest) { $output->writeElement('h2', 'Code Coverage Files for test ' . $istest); } else { $output->writeElement('h2', 'Code Coverage Files for ' . $basePath); $output->writeElement('h3', 'Total lines: ' . $total . ', covered lines: ' . $covered . ', dead lines: ' . $dead); $percent = 0; if ($total > 0) { $percent = round($covered / $total * 100); } $output->startElement('p'); if ($percent < 50) { $output->writeAttribute('class', 'bad'); } elseif ($percent < 75) { $output->writeAttribute('class', 'ok'); } else { $output->writeAttribute('class', 'good'); } $output->text($percent . '% code coverage'); $output->endElement(); } $output->startElement('p'); $output->startElement('a'); $output->writeAttribute('href', 'index-test.html'); $output->text('Code Coverage per PHPT test'); $output->endElement(); $output->endElement(); $output->startElement('ul'); echo "[Step 1 of 2] Rendering files\n"; foreach ($results as $i => $name) { echo '(' . ($i + 1) . ' of ' . count($results) . ') ' . $name . "\n"; $source = new SourceFile($name, $agg, $this->testPath, $this->sourcePath); $output->startElement('li'); $percent = $source->coveragePercentage(); $output->startElement('div'); if ($percent < 50) { $output->writeAttribute('class', 'bad'); } elseif ($percent < 75) { $output->writeAttribute('class', 'ok'); } else { $output->writeAttribute('class', 'good'); } $output->text(' Coverage: ' . str_pad($percent . '%', 4, ' ', STR_PAD_LEFT)); $output->endElement(); $output->startElement('a'); $output->writeAttribute('href', $this->mangleFile($name, $istest)); $output->text($source->shortName()); $output->endElement(); $output->endElement(); $source->render($this); } echo "done\n"; $output->endElement(); $output->endElement(); $output->endDocument(); }