Changeset 93607 in webkit
- Timestamp:
- Aug 23, 2011 9:02:41 AM (13 years ago)
- Location:
- trunk/Tools
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js
r93259 r93607 76 76 }; 77 77 78 base.filterDictionary = function(dictionary, predicate) 79 { 80 var result = {}; 81 82 for (var key in dictionary) { 83 if (predicate(key)) 84 result[key] = dictionary[key]; 85 } 86 87 return result; 88 }; 89 78 90 base.filterTree = function(tree, isLeaf, predicate) 79 91 { -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js
r93259 r93607 168 168 }); 169 169 170 test("filterDictionary", 3, function() { 171 var dictionary = { 172 'foo': 43, 173 'bar': 11 174 } 175 deepEqual(base.filterDictionary(dictionary, function() { return true; }), { 176 "foo": 43, 177 "bar": 11 178 }); 179 deepEqual(base.filterDictionary(dictionary, function() { return false; }), { }); 180 deepEqual(base.filterDictionary(dictionary, function(key) { return key == 'foo'; }), { 181 "foo": 43 182 }); 183 }); 184 170 185 test("filterTree", 2, function() { 171 186 var tree = { -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js
r93259 r93607 24 24 */ 25 25 26 var cont ollers = contollers || {};26 var controllers = controllers || {}; 27 27 28 28 (function(){ 29 29 30 cont ollers.ResultsDetails = base.extends(Object, {30 controllers.ResultsDetails = base.extends(Object, { 31 31 init: function(view, resultsByTest) 32 32 { … … 75 75 }); 76 76 77 controllers.UnexpectedFailures = base.extends(Object, { 78 init: function(view) 79 { 80 this._view = view; 81 this._testFailures = new base.UpdateTracker(); 82 }, 83 update: function(failureAnalysis) 84 { 85 var key = failureAnalysis.newestPassingRevision + "+" + failureAnalysis.oldestFailingRevision; 86 var failure = this._testFailures.get(key); 87 if (!failure) { 88 failure = new ui.notifications.TestFailures(); 89 model.commitDataListForRevisionRange(failureAnalysis.newestPassingRevision + 1, failureAnalysis.oldestFailingRevision).forEach(function(commitData) { 90 failure.addCommitData(commitData); 91 }); 92 this._view.add(failure); 93 $(failure).bind('examine', function() { 94 this.onExamine(failure); 95 }.bind(this)); 96 } 97 failure.addFailureAnalysis(failureAnalysis); 98 this._testFailures.update(key, failure); 99 }, 100 purge: function() { 101 this._testFailures.purge(function(failure) { 102 failure.dismiss(); 103 }); 104 }, 105 onExamine: function(failures) 106 { 107 var resultsView = new ui.results.View({ 108 fetchResultsURLs: results.fetchResultsURLs 109 }); 110 111 var testNameList = failures.testNameList(); 112 var failuresByTest = results.unexpectedFailuresByTest(model.state.resultsByBuilder) 113 var controller = new controllers.ResultsDetails(resultsView, base.filterDictionary(failuresByTest, function(key) { 114 return testNameList.indexOf(testNameList) != -1; 115 })); 116 117 // FIXME: This doesn't belong here. Also, we need some way to call controller.dismiss(). 118 document.body.appendChild(resultsView); 119 } 120 }); 121 122 controllers.FailingBuilders = base.extends(Object, { 123 init: function(view) 124 { 125 this._view = view; 126 this._notification = null; 127 }, 128 update: function(builderNameList) 129 { 130 if (builderNameList.length == 0) { 131 if (this._notification) { 132 this._notification.dismiss(); 133 this._notification = null; 134 } 135 return; 136 } 137 if (!this._notification) { 138 this._notification = new ui.notifications.BuildersFailing(); 139 this._view.add(this._notification); 140 } 141 // FIXME: We should provide regression ranges for the failing builders. 142 // This doesn't seem to happen often enough to worry too much about that, however. 143 this._notification.setFailingBuilders(builderNameList); 144 } 145 }); 146 77 147 })(); -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers/rebaseline.js
r93236 r93607 32 32 }); 33 33 34 var failure ByTest = results.expectedOrUnexpectedFailuresByTest(model.state.resultsByBuilder);35 var controller = new cont ollers.ResultsDetails(resultsView, failureByTest);34 var failuresByTest = results.expectedOrUnexpectedFailuresByTest(model.state.resultsByBuilder); 35 var controller = new controllers.ResultsDetails(resultsView, failuresByTest); 36 36 document.body.appendChild(resultsView); 37 37 }); -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js
r93480 r93607 26 26 (function() { 27 27 28 var g_actions = new ui.notifications.Stream(); 29 var g_info = new ui.notifications.Stream(); 28 var g_info = null; 30 29 31 30 var g_updateTimerId = 0; 32 var g_testFailures = new base.UpdateTracker();33 31 var g_buildersFailing = null; 32 33 var g_unexpectedFailures = null; 34 var g_failingBuilders = null; 34 35 35 36 function update() 36 37 { 37 38 // FIXME: This should be a button with a progress element. 38 var updating = new ui.notifications.Info("Updating ..."); 39 var updating = new ui.notifications.Info('Updating ...'); 40 39 41 g_info.add(updating); 40 42 41 builders.buildersFailingStepRequredForTestCoverage(function(builderNameList) { 42 if (builderNameList.length == 0) { 43 if (g_buildersFailing) { 44 g_buildersFailing.dismiss(); 45 g_buildersFailing = null; 46 } 47 return; 48 } 49 if (!g_buildersFailing) { 50 g_buildersFailing = new ui.notifications.BuildersFailing(); 51 g_info.add(g_buildersFailing); 52 } 53 // FIXME: We should provide regression ranges for the failing builders. 54 // This doesn't seem to happen often enough to worry too much about that, however. 55 g_buildersFailing.setFailingBuilders(builderNameList); 56 }); 43 builders.buildersFailingStepRequredForTestCoverage(g_failingBuilders.update.bind(g_failingBuilders)); 57 44 58 45 base.callInParallel([model.updateRecentCommits, model.updateResultsByBuilder], function() { 59 model.analyzeUnexpectedFailures(function(failureAnalysis) { 60 var key = failureAnalysis.newestPassingRevision + "+" + failureAnalysis.oldestFailingRevision; 61 var failure = g_testFailures.get(key); 62 if (!failure) { 63 failure = new ui.notifications.TestFailures(); 64 model.commitDataListForRevisionRange(failureAnalysis.newestPassingRevision + 1, failureAnalysis.oldestFailingRevision).forEach(function(commitData) { 65 failure.addCommitData(commitData); 66 }); 67 g_actions.add(failure); 68 } 69 failure.addFailureAnalysis(failureAnalysis); 70 g_testFailures.update(key, failure); 71 }, function() { 72 g_testFailures.purge(function(failure) { 73 failure.dismiss(); 74 }); 46 model.analyzeUnexpectedFailures(g_unexpectedFailures.update.bind(g_unexpectedFailures), function() { 47 g_unexpectedFailures.purge(); 75 48 updating.dismiss(); 76 49 }); … … 80 53 $(document).ready(function() { 81 54 g_updateTimerId = window.setInterval(update, config.kUpdateFrequency); 82 document.body.insertBefore(g_actions, document.body.firstChild); 55 56 var actions = new ui.notifications.Stream(); 57 g_unexpectedFailures = new controllers.UnexpectedFailures(actions); 58 59 g_info = new ui.notifications.Stream(); 60 g_failingBuilders = new controllers.FailingBuilders(g_info); 61 62 document.body.insertBefore(actions, document.body.firstChild); 83 63 document.body.insertBefore(g_info, document.body.firstChild); 84 var button = document.body.insertBefore(document.createElement("button"), document.body.firstChild); 64 65 // FIXME: This should be an Action object. 66 var button = document.body.insertBefore(document.createElement('button'), document.body.firstChild); 85 67 button.addEventListener("click", update); 86 68 button.textContent = 'update'; 69 87 70 update(); 88 71 }); -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js
r93522 r93607 139 139 new ui.actions.Examine() 140 140 ])); 141 this._testNameList = []; 142 }, 143 testNameList: function() 144 { 145 return this._testNameList; 141 146 }, 142 147 containsFailureAnalysis: function(failureAnalysis) … … 150 155 if (this.containsFailureAnalysis(failureAnalysis)) 151 156 return; 157 this._testNameList.push(failureAnalysis.testName); 152 158 return this._effects.appendChild(new ui.notifications.FailingTest(failureAnalysis)); 153 159 }, -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js
r93522 r93607 91 91 }); 92 92 93 test('TestFailures', 7, function() {93 test('TestFailures', 8, function() { 94 94 var testFailures = new ui.notifications.TestFailures(); 95 95 equal(testFailures.tagName, 'LI'); … … 135 135 '<li><button>Examine</button></li>' + 136 136 '</ul>'); 137 deepEqual(testFailures.testNameList(), ['test']); 137 138 var time = new Date(); 138 139 time.setMinutes(time.getMinutes() - 10); -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js
r93259 r93607 51 51 fetchResultsURLs: $.noop 52 52 }); 53 var controller = new cont ollers.ResultsDetails(resultsView, kExampleResultsByTest);53 var controller = new controllers.ResultsDetails(resultsView, kExampleResultsByTest); 54 54 controller.showTest("scrollbars/custom-scrollbar-with-incomplete-style.html"); 55 55 equal(resultsView.currentTestName(), "scrollbars/custom-scrollbar-with-incomplete-style.html"); -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html
r93483 r93607 47 47 <script src="scripts/ui/notifications.js"></script> 48 48 <script src="scripts/ui/results.js"></script> 49 <script src="scripts/controllers.js"></script> 49 50 <script src="scripts/summary.js"></script> 50 51 </body> -
trunk/Tools/ChangeLog
r93588 r93607 1 2011-08-23 Adam Barth <abarth@webkit.org> 2 3 garden-o-matic summary should be able to examine failures 4 https://bugs.webkit.org/show_bug.cgi?id=66748 5 6 Reviewed by Dimitri Glazkov. 7 8 This patch refactors a bunch of code from summary.js to independent 9 controllers in controllers.js. This patch also contains the first 10 iteration of binding the "examine" event to a the behavior showing the 11 details view for the tests. There's more work to do here to make this 12 work properly (and elegantly), but this patch is a start. 13 14 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js: 15 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js: 16 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js: 17 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers/rebaseline.js: 18 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js: 19 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: 20 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: 21 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js: 22 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html: 23 1 24 2011-08-23 Adam Barth <abarth@webkit.org> 2 25
Note: See TracChangeset
for help on using the changeset viewer.