protected function PHP_CodeCoverage_Report_HTML_Renderer_File::renderSource

Parameters

PHP_CodeCoverage_Report_Node_File $node:

Return value

string

1 call to PHP_CodeCoverage_Report_HTML_Renderer_File::renderSource()
PHP_CodeCoverage_Report_HTML_Renderer_File::render in drupal/core/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php

File

drupal/core/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php, line 319

Class

PHP_CodeCoverage_Report_HTML_Renderer_File
Renders a PHP_CodeCoverage_Report_Node_File node.

Code

protected function renderSource(PHP_CodeCoverage_Report_Node_File $node) {
  $coverageData = $node
    ->getCoverageData();
  $ignoredLines = $node
    ->getIgnoredLines();
  $testData = $node
    ->getTestData();
  $codeLines = $this
    ->loadFile($node
    ->getPath());
  $lines = '';
  $i = 1;
  foreach ($codeLines as $line) {
    $numTests = '';
    $trClass = '';
    $popoverContent = '';
    $popoverTitle = '';
    if (!isset($ignoredLines[$i]) && isset($coverageData[$i])) {
      $numTests = count($coverageData[$i]);
      if ($coverageData[$i] === NULL) {
        $trClass = ' class="warning"';
      }
      else {
        if ($numTests == 0) {
          $trClass = ' class="danger"';
        }
        else {
          $trClass = ' class="success popin"';
          $popoverContent = '<ul>';
          if ($numTests > 1) {
            $popoverTitle = $numTests . ' tests cover line ' . $i;
          }
          else {
            $popoverTitle = '1 test covers line ' . $i;
          }
          foreach ($coverageData[$i] as $test) {
            switch ($testData[$test]) {
              case 0:
                $testCSS = ' class="success"';
                break;
              case 1:
              case 2:
                $testCSS = ' class="warning"';
                break;
              case 3:
                $testCSS = ' class="danger"';
                break;
              case 4:
                $testCSS = ' class="danger"';
                break;
              default:
                $testCSS = '';
            }
            $popoverContent .= sprintf('<li%s>%s</li>', $testCSS, htmlspecialchars($test));
          }
          $popoverContent .= '</ul>';
        }
      }
    }
    if (!empty($popoverTitle)) {
      $popover = sprintf(' data-title="%s" data-content="%s" data-placement="bottom" data-html="true"', $popoverTitle, htmlspecialchars($popoverContent));
    }
    else {
      $popover = '';
    }
    $lines .= sprintf('     <tr%s%s><td><div align="right"><a name="%d"></a><a href="#%d">%d</a></div></td><td class="codeLine">%s</td></tr>' . "\n", $trClass, $popover, $i, $i, $i, !$this->highlight ? htmlspecialchars($line) : $line);
    $i++;
  }
  return $lines;
}