Changeset 106739 in webkit


Ignore:
Timestamp:
Feb 4, 2012 2:22:12 AM (12 years ago)
Author:
abarth@webkit.org
Message:

garden-o-matic's All Failure tab should let you examine and rebaseline expected failures
https://bugs.webkit.org/show_bug.cgi?id=77802

Reviewed by Eric Seidel.

This patch refactors our directory grouping code into base.js where it
can be shared between failures.js and notifications.js. It then adds
an Examine action to each group of failures that triggers the "results"
view.

  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css:
Location:
trunk/Tools
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js

    r99325 r106739  
    172172};
    173173
     174base.forEachDirectory = function(pathList, callback)
     175{
     176    var pathsByDirectory = {};
     177    pathList.forEach(function(path) {
     178        var directory = base.dirName(path);
     179        pathsByDirectory[directory] = pathsByDirectory[directory] || [];
     180        pathsByDirectory[directory].push(path);
     181    });
     182    Object.keys(pathsByDirectory).sort().forEach(function(directory) {
     183        var paths = pathsByDirectory[directory];
     184        callback(directory + ' (' + paths.length + ' tests)', paths);
     185    });
     186};
     187
    174188base.parseJSONP = function(jsonp)
    175189{
     
    177191    var endIndex = jsonp.lastIndexOf(')');
    178192    return JSON.parse(jsonp.substr(startIndex, endIndex - startIndex));
    179 }
     193};
    180194
    181195base.RequestTracker = function(requestsInFlight, callback, args)
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js

    r106727 r106739  
    105105    {
    106106        var expectedOrUnexpectedFailures = results.expectedOrUnexpectedFailuresByTest(this._model.resultsByBuilder);
    107         this._view.setFailingTests(Object.keys(expectedOrUnexpectedFailures));
     107        var failingTestsList = Object.keys(expectedOrUnexpectedFailures);
     108
     109        $(this._view).empty();
     110        base.forEachDirectory(failingTestsList, function(label, testsFailingInDirectory) {
     111            var listItem = new ui.failures.ListItem(label, testsFailingInDirectory);
     112            this._view.appendChild(listItem);
     113            $(listItem).bind('examine', function() {
     114                this.onExamine(testsFailingInDirectory);
     115            }.bind(this));
     116        }.bind(this));
     117    },
     118    onExamine: function(failingTestsList)
     119    {
     120        var resultsView = new ui.results.View({
     121            fetchResultsURLs: results.fetchResultsURLs
     122        });
     123        var failuresByTest = base.filterDictionary(
     124            results.expectedOrUnexpectedFailuresByTest(this._model.resultsByBuilder),
     125            function(key) {
     126                return failingTestsList.indexOf(key) != -1;
     127            });
     128        var controller = new controllers.ResultsDetails(resultsView, failuresByTest);
     129        this._delegate.showResults(resultsView);
    108130    }
    109131});
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js

    r106727 r106739  
    128128});
    129129
    130 ui.failures.List = base.extends('div', {
     130ui.failures.ListItem = base.extends('li', {
     131    init: function(groupName, failingTestsList)
     132    {
     133        this._failingTestsList = failingTestsList;
     134        this.appendChild(new ui.actions.List([
     135            new ui.actions.Examine().makeDefault(),
     136        ]));
     137        var label = this.appendChild(document.createElement('label'))
     138        label.textContent = failingTestsList.length == 1 ? failingTestsList[0] : groupName;
     139    },
     140});
     141
     142ui.failures.List = base.extends('ul', {
    131143    init: function()
    132144    {
     145        this.className = 'failures';
    133146        this.textContent = 'Loading...';
    134     },
    135     setFailingTests: function(failingTestsList)
    136     {
    137         $(this).empty();
    138         var list = this.appendChild(document.createElement('ul'));
    139         failingTestsList.sort().forEach(function(failingTest) {
    140             list.appendChild(document.createElement('li')).textContent = failingTest;
    141         });
    142147    }
    143148});
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js

    r101072 r106739  
    183183    _forEachTestGroup: function(callback)
    184184    {
    185         var testsByDirectory = {};
    186         this._testNameList.forEach(function(testName) {
    187             var directory = base.dirName(testName);
    188             testsByDirectory[directory] = testsByDirectory[directory] || [];
    189             testsByDirectory[directory].push(testName);
    190         });
    191185        var individualTests = [];
    192         Object.keys(testsByDirectory).forEach(function(directory) {
    193             var testsInDirectory = testsByDirectory[directory];
    194             var count = testsInDirectory.length;
    195             if (count <= kMaxTestsPerGroup) {
     186        base.forEachDirectory(this._testNameList, function(groupLabel, testsInDirectory) {
     187            if (testsInDirectory.length <= kMaxTestsPerGroup) {
    196188                individualTests = individualTests.concat(testsInDirectory);
    197189                return;
    198190            }
    199             callback(directory + ' (' + count + ' tests)', testsInDirectory);
     191            callback(groupLabel, testsInDirectory);
    200192        });
    201193        individualTests.forEach(function(testName) {
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js

    r104423 r106739  
    219219            '<div class="problem">' +
    220220                '<ul class="effects">' +
    221                     '<li><a target="_blank" href="http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test">test</a></li>' +
    222221                    '<li><a target="_blank" href="http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=foo">foo</a></li>' +
     222                    '<li><a target="_blank" href="http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test">test</a></li>' +
    223223                '</ul>' +
    224224                '<ul class="actions">' +
     
    264264            '<div class="problem">' +
    265265                '<ul class="effects">' +
    266                     '<li><a target="_blank" href="http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test">test</a></li>' +
    267266                    '<li><a target="_blank" href="http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=foo">foo</a></li>' +
     267                    '<li><a target="_blank" href="http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test">test</a></li>' +
    268268                '</ul>' +
    269269                '<ul class="actions">' +
  • trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css

    r97190 r106739  
    5252        padding: 0 2px;
    5353    }
     54
     55
     56ul.failures {
     57    padding: 0px;
     58}
     59
     60    ul.failures>li {
     61        display: -webkit-box;
     62    }
     63
     64    ul.failures>li label {
     65        margin-left: 10px;
     66    }
     67
     68        ul.failures>li ul.actions {
     69            padding: 0px;
     70            visibility: hidden;
     71        }
     72
     73        ul.failures>li:hover ul.actions {
     74            visibility: visible;
     75        }
  • trunk/Tools/ChangeLog

    r106735 r106739  
     12012-02-04  Adam Barth  <abarth@webkit.org>
     2
     3        garden-o-matic's All Failure tab should let you examine and rebaseline expected failures
     4        https://bugs.webkit.org/show_bug.cgi?id=77802
     5
     6        Reviewed by Eric Seidel.
     7
     8        This patch refactors our directory grouping code into base.js where it
     9        can be shared between failures.js and notifications.js.  It then adds
     10        an Examine action to each group of failures that triggers the "results"
     11        view.
     12
     13        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
     14        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
     15        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
     16        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
     17        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
     18        * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css:
     19
    1202012-02-04  Ojan Vafai  <ojan@chromium.org>
    221
Note: See TracChangeset for help on using the changeset viewer.