Title: [137780] trunk/Tools
Revision
137780
Author
[email protected]
Date
2012-12-14 15:17:03 -0800 (Fri, 14 Dec 2012)

Log Message

garden-o-matic doesn't know about reftests
https://bugs.webkit.org/show_bug.cgi?id=101976

Reviewed by Eric Seidel.

Attempt to make garden-o-matic properly aware of reftests again.

This is re-landing r137407 with a change to
rebaselineWithStatusUpdates() to actually pass the filtered
failureInofLost to checkout.rebaseline().

Unfortunately, the testing coverage for this whole module is almost
non-existent, and it's not obvious that there's a good way to
stub out checkout.rebaseline() to test that the right thing
happens. I verified the change manually.

* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
(.):
* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
(.):
* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:

Modified Paths

Diff

Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js (137779 => 137780)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js	2012-12-14 23:04:23 UTC (rev 137779)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js	2012-12-14 23:17:03 UTC (rev 137780)
@@ -30,23 +30,48 @@
 var kCheckoutUnavailableMessage = 'Failed! Garden-o-matic needs a local server to modify your working copy. Please run "webkit-patch garden-o-matic" start the local server.';
 
 // FIXME: Where should this function go?
-function rebaselineWithStatusUpdates(failureInfoList)
+function rebaselineWithStatusUpdates(failureInfoList, resultsByTest)
 {
-    // FIXME: If a test is a reftest, webkit-patch rebaseline-test should error out
-    // and we should alert (modal dialog?) the user.
     var statusView = new ui.StatusArea('Rebaseline');
     var id = statusView.newId();
 
-    var testNames = base.uniquifyArray(failureInfoList.map(function(failureInfo) { return failureInfo.testName; }));
-    var testName = testNames.length == 1 ? testNames[0] : testNames.length + ' tests';
-    statusView.addMessage(id, 'Performing rebaseline of ' + testName + '...');
+    var failuresToRebaseline = [];
+    var testNamesLogged = [];
+    failureInfoList.forEach(function(failureInfo) {
+        if (isAnyReftest(failureInfo.testName, resultsByTest)) {
+            if (testNamesLogged.indexOf(failureInfo.testName) == -1) {
+                statusView.addMessage(id, failureInfo.testName + ' is a ref test, skipping');
+                testNamesLogged.push(failureInfo.testName);
+            }
+        } else {
+            failuresToRebaseline.push(failureInfo);
+            if (testNamesLogged.indexOf(failureInfo.testName) == -1) {
+                statusView.addMessage(id, 'Rebaselining ' + failureInfo.testName + '...');
+                testNamesLogged.push(failureInfo.testName);
+            }
+        }
+    });
+    
+    if (failuresToRebaseline.length) {
+        checkout.rebaseline(failuresToRebaseline, function() {
+            statusView.addFinalMessage(id, 'Rebaseline done! Please land with "webkit-patch land-cowhand".');
+        }, function(failureInfo) {
+            statusView.addMessage(id, failureInfo.testName + ' on ' + ui.displayNameForBuilder(failureInfo.builderName));
+        }, function() {
+            statusView.addFinalMessage(id, kCheckoutUnavailableMessage);
+        });
+    } else {
+        statusView.addFinalMessage(id, 'No non-reftests left to rebaseline!')
+    }
+}
 
-    checkout.rebaseline(failureInfoList, function() {
-        statusView.addFinalMessage(id, 'Rebaseline done! Please land with "webkit-patch land-cowhand".');
-    }, function(failureInfo) {
-        statusView.addMessage(id, failureInfo.testName + ' on ' + ui.displayNameForBuilder(failureInfo.builderName));
-    }, function() {
-        statusView.addFinalMessage(id, kCheckoutUnavailableMessage);
+// FIXME: This is duplicated from ui/results.js :(.
+function isAnyReftest(testName, resultsByTest)
+{
+    return Object.keys(resultsByTest[testName]).map(function(builder) {
+        return resultsByTest[testName][builder];
+    }).some(function(resultNode) {
+        return resultNode.reftest_type && resultNode.reftest_type.length;
     });
 }
 
@@ -98,7 +123,7 @@
     },
     onRebaseline: function()
     {
-        rebaselineWithStatusUpdates(this._failureInfoList());
+        rebaselineWithStatusUpdates(this._failureInfoList(), this._resultsByTest);
         this._view.nextTest();
     },
     onUpdateExpectations: function()
@@ -206,7 +231,14 @@
     },
     onRebaseline: function(failures)
     {
-        rebaselineWithStatusUpdates(this._toFailureInfoList(failures));
+        var testNameList = failures.testNameList();
+        var failuresByTest = base.filterDictionary(
+            this._resultsFilter(this._model.resultsByBuilder),
+            function(key) {
+                return testNameList.indexOf(key) != -1;
+            });
+
+        rebaselineWithStatusUpdates(this._toFailureInfoList(failures), failuresByTest);
     },
     onUpdateExpectations: function(failures)
     {

Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js (137779 => 137780)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js	2012-12-14 23:04:23 UTC (rev 137779)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js	2012-12-14 23:17:03 UTC (rev 137780)
@@ -187,7 +187,7 @@
     return Object.keys(resultsByTest[testName]).map(function(builder) {
         return resultsByTest[testName][builder];
     }).some(function(resultNode) {
-        return resultNode.is_reftest || resultNode.is_mismatch_reftest
+        return resultNode.reftest_type && resultNode.reftest_type.length;
     });
 }
 

Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js (137779 => 137780)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js	2012-12-14 23:04:23 UTC (rev 137779)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js	2012-12-14 23:17:03 UTC (rev 137780)
@@ -68,14 +68,14 @@
         "Mock Builder": {
             "expected": "PASS",
             "actual": "IMAGE",
-            "is_reftest": true
+            "reftest_type": ["=="]
         }
     },
     "mismatch-reftest.html": {
         "Mock Builder": {
             "expected": "PASS",
             "actual": "IMAGE",
-            "is_mismatch_reftest": true
+            "reftest_type": ["!="]
         }
     }
 };

Modified: trunk/Tools/ChangeLog (137779 => 137780)


--- trunk/Tools/ChangeLog	2012-12-14 23:04:23 UTC (rev 137779)
+++ trunk/Tools/ChangeLog	2012-12-14 23:17:03 UTC (rev 137780)
@@ -1,3 +1,27 @@
+2012-12-14  Dirk Pranke  <[email protected]>
+
+        garden-o-matic doesn't know about reftests
+        https://bugs.webkit.org/show_bug.cgi?id=101976
+
+        Reviewed by Eric Seidel.
+
+        Attempt to make garden-o-matic properly aware of reftests again.
+
+        This is re-landing r137407 with a change to
+        rebaselineWithStatusUpdates() to actually pass the filtered
+        failureInofLost to checkout.rebaseline().
+
+        Unfortunately, the testing coverage for this whole module is almost
+        non-existent, and it's not obvious that there's a good way to
+        stub out checkout.rebaseline() to test that the right thing
+        happens. I verified the change manually.
+
+        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
+        (.):
+        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
+        (.):
+        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
+
 2012-12-14  Ryosuke Niwa  <[email protected]>
 
         "Running 1 DumpRenderTree over X shards" is not a helpful output
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to