/** * @param PHP_CodeCoverage_Report_Node_Directory $node * @param string $file */ public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) { $classes = $node->getClassesAndTraits(); $template = new Text_Template($this->templatePath . 'dashboard.html', '{{', '}}'); $this->setCommonTemplateVariables($template, $node); $template->setVar(array('least_tested_methods' => $this->leastTestedMethods($classes), 'top_project_risks' => $this->topProjectRisks($classes), 'cc_values' => $this->classComplexity($classes), 'ccd_values' => $this->classCoverageDistribution($classes), 'backlink' => basename(str_replace('.dashboard', '', $file)))); $template->renderTo($file); }
/** * @param PHP_CodeCoverage_Report_Node_Directory $node * @param string $file */ public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file) { $classes = $node->getClassesAndTraits(); $template = new Text_Template($this->templatePath . 'dashboard.html', '{{', '}}'); $this->setCommonTemplateVariables($template, $node); $complexity = $this->complexity($classes); $coverageDistribution = $this->coverageDistribution($classes); $insufficientCoverage = $this->insufficientCoverage($classes); $projectRisks = $this->projectRisks($classes); $template->setVar(array('insufficient_coverage_classes' => $insufficientCoverage['class'], 'insufficient_coverage_methods' => $insufficientCoverage['method'], 'project_risks_classes' => $projectRisks['class'], 'project_risks_methods' => $projectRisks['method'], 'complexity_class' => $complexity['class'], 'complexity_method' => $complexity['method'], 'class_coverage_distribution' => $coverageDistribution['class'], 'method_coverage_distribution' => $coverageDistribution['method'])); $template->renderTo($file); }
/** * @param PHP_CodeCoverage_Report_Node_Directory $root * @param array $items * @param array $tests * @param boolean $cacheTokens */ protected function addItems(PHP_CodeCoverage_Report_Node_Directory $root, array $items, array $tests, $cacheTokens) { foreach ($items as $key => $value) { if (substr($key, -2) == '/f') { $key = substr($key, 0, -2); $root->addFile($key, $value, $tests, $cacheTokens); } else { $child = $root->addDirectory($key); $this->addItems($child, $value, $tests, $cacheTokens); } } }
/** * @param PHP_CodeCoverage_Report_Node_Directory $root * @param array $items * @param array $tests * @param boolean $cacheTokens */ private function addItems(PHP_CodeCoverage_Report_Node_Directory $root, array $items, array $tests, $cacheTokens) { foreach ($items as $key => $value) { if (substr($key, -2) == '/f') { $key = substr($key, 0, -2); if (file_exists($root->getPath() . DIRECTORY_SEPARATOR . $key)) { $root->addFile($key, $value, $tests, $cacheTokens); } } else { $child = $root->addDirectory($key); $this->addItems($child, $value, $tests, $cacheTokens); } } }
private function processDirectory(PHP_CodeCoverage_Report_Node_Directory $directory, PHP_CodeCoverage_Report_XML_Node $context) { $dirObject = $context->addDirectory($directory->getName()); $this->setTotals($directory, $dirObject->getTotals()); foreach ($directory as $node) { if ($node instanceof PHP_CodeCoverage_Report_Node_Directory) { $this->processDirectory($node, $dirObject); continue; } if ($node instanceof PHP_CodeCoverage_Report_Node_File) { $this->processFile($node, $dirObject); continue; } throw new PHP_CodeCoverage_Exception('Unknown node type for XML report'); } }
/** * @param PHP_CodeCoverage_Report_Node_Directory $node * @param string $file * @param string $title */ public function render(PHP_CodeCoverage_Report_Node_Directory $node, $file, $title = NULL) { if ($title === NULL) { $title = $node->getName(); } $template = new Text_Template($this->templatePath . 'directory.html'); $this->setCommonTemplateVariables($template, $title, $node); $items = $this->renderItem($node, TRUE); foreach ($node->getDirectories() as $item) { $items .= $this->renderItem($item); } foreach ($node->getFiles() as $item) { $items .= $this->renderItem($item); } $template->setVar(array('id' => $node->getId(), 'items' => $items)); $template->renderTo($file); }
public function testProcess() { vfsStream::setup('tmp'); $target = vfsStream::url('tmp'); file_put_contents($target . '/file', "test\n"); $report = new \PHP_CodeCoverage_Report_Node_Directory($target); $report->addFile('file', array('class' => array(1 => 1)), array(), false); $coverage = $this->getMock('PHP_CodeCoverage'); $coverage->expects($this->once())->method('getReport')->will($this->returnValue($report)); $report = new Html(array('target' => $target)); try { $result = $report->process($coverage); } catch (\Exception $e) { // workaround until https://github.com/mikey179/vfsStream/pull/67 is merged if ($e->getMessage() === 'Could not write to vfs://tmp/index.dashboard.html: /tmp/index.dashboard.html): failed to open stream: "org\\bovigo\\vfs\\vfsStreamWrapper::stream_open" call failed') { $this->markTestSkipped(); } else { $this->fail(); } } }
/** * Constructor. * * @param PHP_CodeCoverage_Report_Node_Directory $node */ public function __construct(PHP_CodeCoverage_Report_Node_Directory $node) { $this->nodes = $node->getChildNodes(); }