Title: [137407] trunk/Tools
Revision
137407
Author
[email protected]
Date
2012-12-11 19:38:31 -0800 (Tue, 11 Dec 2012)

Log Message

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

Reviewed by Ojan Vafai.

This is a first attempt at fixing this, sort of a "stop-the-bleeding"
fix. We will now look at the list of tests we're asked to rebaseline,
and log which ones are reftests into the status area, and rebaseline
the rest.

Longer-term, we should display feedback in the results area based on
which tests we're looking at. If the test list contains no reftests,
we should behave as today; if the list is all reftest, we should
probably disable the button, and if the list is a mix, we should
probably display an alert next to the button or something. It would
also be nice to annotate which tests were reftests, maybe with a
"(reftest)" next to the test name or something.

* 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 (137406 => 137407)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js	2012-12-12 03:12:23 UTC (rev 137406)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js	2012-12-12 03:38:31 UTC (rev 137407)
@@ -30,26 +30,45 @@
 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 + '...');
 
-    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);
+    var failuresToRebaseline = [];
+    testNames.forEach(function(testName) {
+        if (isAnyReftest(testName, resultsByTest)) 
+            statusView.addMessage(id, testName + ' is a ref test, skipping');
+        else {
+            failuresToRebaseline.push(testName);
+            statusView.addMessage(id, 'Rebaselining ' + 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 tests left to rebaseline!')
 }
 
+// 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;
+    });
+}
+
 // FIXME: Where should this function go?
 function updateExpectationsWithStatusUpdates(failureInfoList)
 {
@@ -98,7 +117,7 @@
     },
     onRebaseline: function()
     {
-        rebaselineWithStatusUpdates(this._failureInfoList());
+        rebaselineWithStatusUpdates(this._failureInfoList(), this._resultsByTest);
         this._view.nextTest();
     },
     onUpdateExpectations: function()
@@ -206,7 +225,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 (137406 => 137407)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js	2012-12-12 03:12:23 UTC (rev 137406)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js	2012-12-12 03:38:31 UTC (rev 137407)
@@ -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 (137406 => 137407)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js	2012-12-12 03:12:23 UTC (rev 137406)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js	2012-12-12 03:38:31 UTC (rev 137407)
@@ -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 (137406 => 137407)


--- trunk/Tools/ChangeLog	2012-12-12 03:12:23 UTC (rev 137406)
+++ trunk/Tools/ChangeLog	2012-12-12 03:38:31 UTC (rev 137407)
@@ -1,5 +1,31 @@
 2012-12-11  Dirk Pranke  <[email protected]>
 
+        garden-o-matic doesn't know about reftests
+        https://bugs.webkit.org/show_bug.cgi?id=101976
+
+        Reviewed by Ojan Vafai.
+
+        This is a first attempt at fixing this, sort of a "stop-the-bleeding"
+        fix. We will now look at the list of tests we're asked to rebaseline,
+        and log which ones are reftests into the status area, and rebaseline
+        the rest.
+
+        Longer-term, we should display feedback in the results area based on
+        which tests we're looking at. If the test list contains no reftests,
+        we should behave as today; if the list is all reftest, we should
+        probably disable the button, and if the list is a mix, we should
+        probably display an alert next to the button or something. It would
+        also be nice to annotate which tests were reftests, maybe with a
+        "(reftest)" next to the test name or something.
+
+        * 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-11  Dirk Pranke  <[email protected]>
+
         REGRESSION(r133380): new tests without expected file reported as failing tests on the bots
         https://bugs.webkit.org/show_bug.cgi?id=101469
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to