Title: [94487] trunk/Tools
Revision
94487
Author
[email protected]
Date
2011-09-03 01:29:32 -0700 (Sat, 03 Sep 2011)

Log Message

garden-o-matic results view should have a better results selector
https://bugs.webkit.org/show_bug.cgi?id=67542

Reviewed by Dimitri Glazkov.

This patch adds a basic grid-based results selector to the results
view.  Currently, this grid just shows how the tests fail on the
various bots.  A future patch will let you select which failure to view
and to mark the failures for rebaselining.

* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
  - Add some more basic functions for manipulating dictionaries.
* 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/base.js (94486 => 94487)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js	2011-09-03 08:27:38 UTC (rev 94486)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js	2011-09-03 08:29:32 UTC (rev 94487)
@@ -92,6 +92,17 @@
     });
 };
 
+base.values = function(dictionary)
+{
+    var result = [];
+
+    for (var key in dictionary) {
+        result.push(dictionary[key]);
+    }
+
+    return result;
+};
+
 base.filterDictionary = function(dictionary, predicate)
 {
     var result = {};
@@ -104,6 +115,19 @@
     return result;
 };
 
+base.mapDictionary = function(dictionary, functor)
+{
+    var result = {};
+
+    for (var key in dictionary) {
+        var value = functor(dictionary[key]);
+        if (typeof value !== 'undefined')
+            result[key] = value;
+    }
+
+    return result;
+};
+
 base.filterTree = function(tree, isLeaf, predicate)
 {
     var filteredTree = {};

Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js (94486 => 94487)


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js	2011-09-03 08:27:38 UTC (rev 94486)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js	2011-09-03 08:29:32 UTC (rev 94487)
@@ -80,6 +80,13 @@
     deepEqual(base.flattenArray([["a"], [], ["b"]]), ["a", "b"]);
 });
 
+test("values", 4, function() {
+    deepEqual(base.values({}), []);
+    deepEqual(base.values({a: 1}), [1]);
+    deepEqual(base.values({a: 1, b: 2}), [1, 2]);
+    deepEqual(base.values({a: 1, b: 2, c: 1}), [1, 2, 1]);
+});
+
 test("callInParallel", 4, function() {
     var expectedCall = [true, true, true];
     var expectCompletionCallback = true;
@@ -185,7 +192,7 @@
     var dictionary = {
         'foo': 43,
         'bar': 11
-    }
+    };
     deepEqual(base.filterDictionary(dictionary, function() { return true; }), {
         "foo": 43,
         "bar": 11
@@ -196,6 +203,24 @@
     });
 });
 
+test("mapDictionary", 3, function() {
+    deepEqual(base.mapDictionary({}, function(value) { return value - 10; }), {});
+    var dictionary = {
+        'foo': 43,
+        'bar': 11
+    };
+    deepEqual(base.mapDictionary(dictionary, function(value) { return value - 10; }), {
+        "foo": 33,
+        "bar": 1
+    });
+    deepEqual(base.mapDictionary(dictionary, function(value) {
+        if (value > 20)
+            return value - 20;
+    }), {
+        "foo": 23,
+    });
+});
+
 test("filterTree", 2, function() {
     var tree = {
         'path': {

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


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js	2011-09-03 08:27:38 UTC (rev 94486)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js	2011-09-03 08:29:32 UTC (rev 94487)
@@ -34,6 +34,7 @@
         this._resultsByTest = resultsByTest;
 
         this._view.setTestList(Object.keys(this._resultsByTest));
+        this._view.setResultsByTest(resultsByTest);
 
         this._view.addAction(new ui.actions.Rebaseline().makeDefault());
         this._view.addAction(new ui.actions.Previous());

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


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js	2011-09-03 08:27:38 UTC (rev 94486)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js	2011-09-03 08:29:32 UTC (rev 94487)
@@ -223,6 +223,45 @@
     }
 });
 
+ui.results.ResultsSelector = base.extends('table', {
+    init: function()
+    {
+        this.className = 'results-selector';
+    },
+    setResultsByTest: function(resultsByTest)
+    {
+        var buildersByTest = base.mapDictionary(resultsByTest, Object.keys);
+
+        var testNameList = Object.keys(buildersByTest);
+        var builderNameList = base.uniquifyArray(base.flattenArray(base.values(buildersByTest)));
+        builderNameList.sort();
+
+        var titles = this.createTHead().insertRow();
+        // Note the reverse iteration because insertCell() inserts at the beginning of the row.
+        for (var i = builderNameList.length - 1; i >= 0; --i) {
+            titles.insertCell().textContent = builderNameList[i];
+        }
+        titles.insertCell(); // For the test names.
+
+        this._body = this.appendChild(document.createElement('tbody'));
+
+        testNameList.forEach(function(testName) {
+            row = this._body.insertRow();
+            for (var i = builderNameList.length - 1; i >= 0; --i) {
+                var cell = row.insertCell();
+                var builderName = builderNameList[i];
+                if (buildersByTest[testName].indexOf(builderName) != -1) {
+                    cell.className = 'result';
+                    cell.textContent = resultsByTest[testName][builderName].actual;
+                }
+            }
+            var cell = row.insertCell()
+            cell.className = 'test-name';
+            cell.textContent = testName;
+        }.bind(this));
+    },
+});
+
 ui.results.View = base.extends('div', {
     init: function(delegate)
     {
@@ -231,10 +270,11 @@
 
         this._testSelector = new ui.results.TestSelector();
         this._builderSelector = new ui.results.BuilderSelector();
+        this._resultsSelector = new ui.results.ResultsSelector();
         this._resultsDetails = new ui.results.ResultsDetails(delegate);
         this._actionList = new ui.actions.List();
 
-        $('.toolbar', this).append(this._testSelector).append(this._builderSelector).append(this._actionList);
+        $('.toolbar', this).append(this._testSelector).append(this._builderSelector).append(this._resultsSelector).append(this._actionList);
         $('.content', this).append(this._resultsDetails);
     },
     addAction: function(action)
@@ -249,6 +289,10 @@
     {
         this._builderSelector.setBuilderList(buildNameList);
     },
+    setResultsByTest: function(resultsByTest)
+    {
+        this._resultsSelector.setResultsByTest(resultsByTest);
+    },
     currentTestName: function()
     {
         return this._testSelector.selectedItem();

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


--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js	2011-09-03 08:27:38 UTC (rev 94486)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js	2011-09-03 08:29:32 UTC (rev 94487)
@@ -66,6 +66,30 @@
     });
     equal(resultsView.currentTestName(), "scrollbars/custom-scrollbar-with-incomplete-style.html");
     equal(resultsView.currentBuilderName(), "Mock Linux");
-})
+});
 
+test("ResultsSelector", 1, function() {
+    var resultsSelector = new ui.results.ResultsSelector();
+    resultsSelector.setResultsByTest(kExampleResultsByTest);
+    equal($(resultsSelector).wrap('<div>').parent().html(),
+        '<table class="results-selector">' +
+            '<thead>' +
+                '<tr><td></td><td>Mock Builder</td><td>Mock Linux</td></tr>' +
+            '</thead>' +
+            '<tbody>' +
+                '<tr>' +
+                    '<td class="test-name">userscripts/another-test.html</td>' +
+                    '<td class="result">TEXT</td>' +
+                    '<td></td>' +
+                '</tr>' +
+                '<tr>' +
+                    '<td class="test-name">scrollbars/custom-scrollbar-with-incomplete-style.html</td>' +
+                    '<td class="result">CRASH</td>' +
+                    '<td class="result">CRASH</td>' +
+                '</tr>' +
+            '</tbody>' +
+        '</table>');
+});
+
+
 })();

Modified: trunk/Tools/ChangeLog (94486 => 94487)


--- trunk/Tools/ChangeLog	2011-09-03 08:27:38 UTC (rev 94486)
+++ trunk/Tools/ChangeLog	2011-09-03 08:29:32 UTC (rev 94487)
@@ -1,5 +1,24 @@
 2011-09-03  Adam Barth  <[email protected]>
 
+        garden-o-matic results view should have a better results selector
+        https://bugs.webkit.org/show_bug.cgi?id=67542
+
+        Reviewed by Dimitri Glazkov.
+
+        This patch adds a basic grid-based results selector to the results
+        view.  Currently, this grid just shows how the tests fail on the
+        various bots.  A future patch will let you select which failure to view
+        and to mark the failures for rebaselining.
+
+        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
+        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
+          - Add some more basic functions for manipulating dictionaries.
+        * 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:
+
+2011-09-03  Adam Barth  <[email protected]>
+
         garden-o-matic results view should show Actual and Expected results for text failures
         https://bugs.webkit.org/show_bug.cgi?id=67536
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to