Commit:    526ac548ee842570da043bc95a848b865cebf5b8
Author:    Sara Golemon <poll...@php.net>         Fri, 24 Aug 2018 22:53:38 
-0400
Parents:   31bd35c92c5719829d02239232d3798ced7a218f
Branches:  master

Link:       
http://git.php.net/?p=web/qa.git;a=commitdiff;h=526ac548ee842570da043bc95a848b865cebf5b8

Log:
Refactor reports/run_tests.php

Changed paths:
  M  reports/run_tests.php

diff --git a/reports/run_tests.php b/reports/run_tests.php
index d611063..f4d6fa8 100644
--- a/reports/run_tests.php
+++ b/reports/run_tests.php
@@ -18,40 +18,101 @@
 
 $startTime = microtime(true);
 
-include "../include/functions.php";
-include "../include/release-qa.php";
+include __DIR__ . '/../include/release-qa.php';
+include __DIR__ . '/../include/functions.php';
+require __DIR__ . '/reportsfunctions.php';
 
-require 'reportsfunctions.php';
+common_header();
+echo "<script src=\"sorttable.js\"></script>\n";
+echo "<div style=\"margin:10px\">\n";
 
-$getVersion = null;
+$version = $_GET['version'] ?? '';
+if (is_valid_php_version($version, $QA_RELEASES)) {
+    $tmSiteUpdate = outputTestReportsForVersion($version);
+} else {
+    $tmSiteUpdate = outputTestReportsSummary();
+}
 
-if (isset($_GET['version'])) {
-    //sanity check
-    if (!is_valid_php_version($_GET['version'], $QA_RELEASES)) {
-        exit('invalid version');
-    }
-    $getVersion = $_GET['version'];
-    $TITLE = 'PHP Test Reports For PHP Version '.$_GET['version'];
+echo "</div>\n";
+// Last update = date of last report in this very page
+$SITE_UPDATE = date('D M d H:i:s Y T', $tmSiteUpdate)."<br />".
+               "Generated in ".round((microtime(true)-$startTime)*1000)." ms";
+common_footer();
+
+/////////////////////////////////////////////////////////////////////////////
+
+function outputReportTitle(string $TITLE) {
+    echo '<h1><a href="run_tests.php">',
+         '<img title="Go back home" src="home.png" border="0" 
style="vertical-align:middle;" /></a>',
+         htmlentities($TITLE), "</h1>\n";
+}
 
-    $limit = 50;
-    if (!empty($_GET['limit'])) {
-        if (is_numeric($_GET['limit'])) {
-            $limit = (int) $_GET['limit'];
+function outputTestReportsSummary() {
+    outputReportTitle('PHP Test Reports Summary');
+    echo <<<HTML
+<table class="sortable" style="border: 1px solid black;padding:5px; 
width:800px">
+<thead>
+ <tr>
+  <th>PHP Version</th>
+  <th>Reports</th>
+  <th>Unique failed tests</th>
+  <th>Total failed tests</th>
+  <th>Last report date</th>
+ </tr>
+</thead>
+<tbody>
+HTML;
+
+    $filter = $_GET['summary_filter'] ?? QA_REPORT_FILTER_ALL;
+    $reportsPerVersion = get_summary_data($filter);
+    uksort($reportsPerVersion, 'version_compare');
+    $maxReportDate = 0;
+    foreach ($reportsPerVersion as $version => $line) {
+        if (version_compare($version, '5.3.8', '<')) {
+            continue;
         }
+        $tmLastReport = strtotime($line['lastReport']);
+        if ($maxReportDate < $tmLastRport) $maxReportDate = $tmLastReport;
+           echo '<tr>';
+           echo '<td><a href="run_tests.php?version=', urlencode($version), 
'">',
+             htmlentities($version).'</a></td>';
+           echo '<td align="right">', intval($line['nbReports']), '</td>';
+           echo '<td align="right">', intval($line['nbFailingTests']), '</td>';
+           echo '<td align="right">', intval($line['nbFailures']), '</td>';
+           echo "<td nowrap align=\"right\" 
sorttable_customkey=\"$tmLastReport\">",
+                format_readable_date($tmLastReport),
+                '</td>';
+           echo "</tr>\n";
     }
+    echo <<<HTML
+</tbody>
+</table>
+<p>(<a href="run_tests.php?summary_filter=0">Show all versions</a> |
+    <a href="run_tests.php">Show stable and current dev only</a>)</p>
+HTML;
+
+    return $maxReportDate;
+}
 
-    $dbFile = dirname(__FILE__).'/db/'.$getVersion.'.sqlite';
-    if (!file_exists($dbFile)) {
-        die('no data for this version');
+function outputTestReportsForVersion(string $getVersion) {
+    outputReportTitle("PHP Test Reports For PHP Version $getVersion");
+    $isDevVersion = substr($getVersion, -4) === '-dev';
+
+    $limit = intval($_GET['limit'] ?? 0);
+    if ($limit <= 0) {
+        $limit = 50;
     }
+
+    $dbFile = __DIR__ . "/db/{$getVersion}.sqlite";
+    file_exists($dbFile) or die('no data for this version');
+
     $database = new SQLite3($dbFile, SQLITE3_OPEN_READONLY);
-    if (!($database instanceof SQLite3)) {
-        die("Error opening DB file: ".$database->lastErrorMsg());
-    }
-    $failedTestsArray = array();
+    ($database instanceof SQLite3) or die("Error opening DB file: 
".$database->lastErrorMsg());
+
+    $failedTestsArray = [];
 
     // Do we add expected failed ?
-    if (isset($_GET['expect']) && $_GET['expect'] == 1) {
+    if (($_GET['expect'] ?? 0) == 1) {
         $query = 'SELECT \'xfail\' as xfail, test_name,COUNT(expectedfail.id) 
as cpt,\'-\' as variations, 
                 datetime(date) as date FROM expectedfail,reports WHERE 
expectedfail.id_report = reports.id 
                 GROUP BY test_name ORDER BY cpt DESC LIMIT :limit';
@@ -75,73 +136,17 @@ if (isset($_GET['version'])) {
     $stmt = $database->prepare($query);
     $stmt->bindValue(':limit', $limit, SQLITE3_INTEGER);
     $q = @$stmt->execute();
-    if (!$q) die("Error querying DB (error ".$database->lastErrorCode()."): 
".$database->lastErrorMsg());
+    $q or die("Error querying DB (error ".$database->lastErrorCode()."): 
".$database->lastErrorMsg());
     while ($tab = $q->fetchArray(SQLITE3_ASSOC)) {
         $failedTestsArray[] = $tab;
     }
     $database->close();
 
-} else {
-    if (!isset($_GET['summary_filter'])) {
-        $filter = QA_REPORT_FILTER_ALL;
-    } else {
-        $filter = $_GET['summary_filter'];
-    }
-    $reportsPerVersion = get_summary_data($filter);
-    $TITLE = "PHP Test Reports Summary";
-
-}
-
-common_header();
-?>
-<script src="sorttable.js"></script>
-<div style="margin:10px">
-
-<h1><a href="run_tests.php">
-<img title="Go back home" src="home.png" border="0" 
style="vertical-align:middle;" /></a>
-<?php echo $TITLE; ?></h1>
-
-<?php
-if (!$getVersion) {
-?>
-<table class="sortable" style="border: 1px solid black;padding:5px; 
width:800px">
-<thead>
- <tr>
-  <th>PHP Version</th>
-  <th>Reports</th>
-  <th>Unique failed tests</th>
-  <th>Total failed tests</th>
-  <th>Last report date</th>
- </tr>
-</thead>
-<tbody>
-<?php
-uksort($reportsPerVersion, 'version_compare');
-$maxReportDate = 0;
-foreach ($reportsPerVersion as $version => $line) {
-
-    if (version_compare($version, '5.3.8', '<')) {
-        continue;
-    }
-    if ($maxReportDate < strtotime($line['lastReport'])) $maxReportDate = 
strtotime($line['lastReport']);
-    echo '<tr>';
-    echo '<td><a 
href="run_tests.php?version='.$version.'">'.$version.'</a></td>';
-    echo '<td align="right">'.$line['nbReports'].'</td>';
-    echo '<td align="right">'.$line['nbFailingTests'].'</td>';
-    echo '<td align="right">'.$line['nbFailures'].'</td>';
-    echo '<td nowrap align="right" 
sorttable_customkey="'.strtotime($line['lastReport']).'">';
-    echo format_readable_date(strtotime($line['lastReport']));
-    echo '</td>';
-    echo '</tr>'."\n";
-}
-?>
-</tbody>
-</table>
-<p>(<a href="run_tests.php?summary_filter=0">Show all versions</a> |
-    <a href="run_tests.php?summary_filter=<?php echo QA_REPORT_FILTER_ALL; 
?>">Show stable and current dev only</a>)</p>
-<?php 
-} else { /* $getVersion */
-?>
+    // Variables interpolated in the following heredoc.
+    $getVersionURL = urlencode($getVersion);
+    $expectCHECKED = (($_GET['expect'] ?? 0) == 1) ? ' CHECKED' : '';
+    $CIQAcolumn = $isDevVersion ? '<th>CIQA status</th>' : '';
+    echo <<<HTML
 <style>
 #testList td {
     padding: 3px;
@@ -153,15 +158,15 @@ function changeExpect()
 {
     var check = document.getElementById('expect').checked;
     if (check == true) {
-        document.location.href = 'run_tests.php?version=<?php echo 
$getVersion; ?>&expect=1';
+        document.location.href = 
'run_tests.php?version=$getVersionURL&expect=1';
     } else {
-        document.location.href = 'run_tests.php?version=<?php echo 
$getVersion; ?>';
+        document.location.href = 'run_tests.php?version=$getVersionURL';
     }
 }
 // ->
 </script>
-<input type="checkbox" id="expect" onClick="javascript:changeExpect()" 
-<?php if (isset($_GET['expect']) && $_GET['expect'] == '1') echo ' checked'; 
?> /><small>Show XFAIL</small><br />
+<input type="checkbox" id="expect" onClick="javascript:changeExpect()" 
$expectCHECKED />
+<small>Show XFAIL</small><br />
 
 <table id="testList" class="sortable" style="margin-top:10px; width: 800px; 
border-collapse: collapse">
     <thead>
@@ -170,65 +175,56 @@ function changeExpect()
      <th>Count</th>
      <th>Variations</th>
      <th>Last report date</th>
-     <?php
-     if (substr($getVersion, -4) == '-dev') {
-     echo '<th>CIQA status</th>';
-     }
-     ?>
+     $CIQAcolumn
      <th>&nbsp;</th>
     </tr>
     </thead>
     <tbody>
- <?php
- $i = 0;
- $maxReportDate = 0;
- foreach ($failedTestsArray as $line) {
-    if ($maxReportDate < strtotime($line['date'])) $maxReportDate = 
strtotime($line['date']);
-     echo ' <tr ';
-     if ($i % 2) echo 'style="background-color: #ffcc66" ';
-     echo '><td>';
-     if (isset($line['xfail'])) echo '[XFAIL] ';
-     echo $line['test_name'].'</td>';
-     echo '<td align="right">'.$line['cpt'].'</td>';
-     echo '<td align="right">'.$line['variations'].'</td>';
-     echo '<td align="right" 
sorttable_customkey="'.strtotime($line['date']).'">';
-     echo format_readable_date(strtotime($line['date']));
-     echo '</td>';
-     if (substr($getVersion, -4) == '-dev') {
-         echo '<td style="';
-         $textCI = '';
-         if (!array_key_exists('success', $line)) {
-            // probably xfail
-            echo 'background-color: grey';
-         } elseif ($line['success'] === null) {
-            // no success. Check fail ?
-            if (isset($line['failedci'])) {
-                echo 'background-color: #c00000';
-                $textCI = 'FAIL';
-            } else {
-                echo 'background-color: grey';
-            }
-         } else {
-            // success
-            echo "background-color: #00c000";
-            $textCI = 'PASS';
+HTML;
+
+    $maxReportDate = 0;
+    foreach ($failedTestsArray as $i => $line) {
+        $tmDate = strtotime($line['date']);
+        if ($maxReportDate < $tmDate) $maxReportDate = $tmDate;
+
+        $style = ($i % 2) ? ' style="background-color: #ffcc66"' : '';
+        echo " <tr{$style}><td>";
+        if (isset($line['xfail'])) { echo '[XFAIL] '; }
+        echo htmlentities($line['test_name']), '</td>';
+        echo '<td align="right">', htmlentities($line['cpt']), '</td>';
+        echo '<td align="right">', htmlentities($line['variations']), '</td>';
+        echo "<td align=\"right\" sorttable_customkey=\"$tmDate\">",
+              format_readable_date($tmDate),
+              '</td>';
+        if ($isDevVersion) {
+            $style = 'background-color: grey';
+             $textCI = '&nbsp;';
+             if (!array_key_exists('success', $line)) {
+                // probably xfail
+             } elseif ($line['success'] === null) {
+                // no success. Check fail ?
+                if (isset($line['failedci'])) {
+                    $style = 'background-color: #c00000';
+                    $textCI = 'FAIL';
+                 }
+             } else {
+                // success
+                $style = "background-color: #00c000";
+                $textCI = 'PASS';
+             }
+
+             echo "<td style=\"$style\" align=\"center\">$textCI</td>";
          }
-         
-         echo '" align="center">'.$textCI.'</td>';
-     }
-     echo '<td>';
-     if (!isset($line['xfail'])) {
-         echo '<a 
href="viewreports.php?version='.$getVersion.'&amp;test='.urlencode($line['test_name']).'">
-         <img src="report.png" title="View reports" border="0" /></a>';
-     }
-     echo '</td>';
-     echo '</tr>'."\n";
-     $i++;
- }
-                
-                ?>
-</tbody></table>
-<?php
+         echo '<td>';
+         if (!isset($line['xfail'])) {
+             echo '<a 
href="viewreports.php?version='.$getVersion.'&amp;test='.urlencode($line['test_name']).'">
+             <img src="report.png" title="View reports" border="0" /></a>';
+         }
+         echo '</td>';
+         echo '</tr>'."\n";
+    }
+    echo "</tbody></table>\n";
+
     if (count($failedTestsArray) >= $limit) {
         echo '<i>There are more failing tests ';
         echo '(<a href="run_tests.php?version=' . $getVersion . 
'&limit=1000">view all)</i>';
@@ -236,13 +232,6 @@ function changeExpect()
         echo '<i>View only the most common failed tests ';
         echo '(<a href="run_tests.php?version=' . $getVersion . 
'&limit=50">view 50)</i>';
     }
-} 
-?>
-
-</div>
-<?php
-// Last update = date of last report in this very page
-$SITE_UPDATE = date('D M d H:i:s Y T', $maxReportDate)."<br />".
-               "Generated in ".round((microtime(true)-$startTime)*1000)." ms";
-common_footer();
 
+    return $maxReportDate;
+}

Reply via email to