Build fix. The query results weren't sorted by the latest commit time,
[WebKit-https.git] / Websites / test-results / public / include / test-results.php
index 7367844..77a1c2f 100644 (file)
@@ -62,8 +62,8 @@ function recursively_add_test_results($db, $build_id, $tests, $full_name) {
         return;
     }
 
-    require_format('expected_result', $tests['expected'], '/^[A-Za-z ]+$/');
-    require_format('actual_result', $tests['actual'], '/^[A-Za-z ]+$/');
+    require_format('expected_result', $tests['expected'], '/^[A-Za-z \+]+$/');
+    require_format('actual_result', $tests['actual'], '/^[A-Za-z \+]+$/');
     require_format('test_time', $tests['time'], '/^\d*$/');
     $modifiers = array_get($tests, 'modifiers');
     if ($modifiers)
@@ -197,12 +197,12 @@ class ResultsJSONGenerator {
         $number_of_days = self::MAXIMUM_NUMBER_OF_DAYS;
         $all_results = $this->db->query(
         "SELECT results.*, builds.* FROM results
-            JOIN (SELECT builds.*, array_agg((build_revisions.repository, build_revisions.value, build_revisions.time)) AS revisions
+            JOIN (SELECT builds.*, array_agg((build_revisions.repository, build_revisions.value, build_revisions.time)) AS revisions,
+                    max(build_revisions.time) AS latest_revision_time
                     FROM builds, build_revisions
                     WHERE build_revisions.build = builds.id AND builds.builder = $1 AND builds.start_time > now() - interval '$number_of_days days'
-                    GROUP BY builds.id
-                    ORDER BY max(build_revisions.time) DESC) as builds ON results.build = builds.id
-            ORDER BY results.test", array($this->builder_id));
+                    GROUP BY builds.id) as builds ON results.build = builds.id
+            ORDER BY results.test, latest_revision_time DESC", array($this->builder_id));
         if (!$all_results)
             return FALSE;