Changeset 93236 in webkit
- Timestamp:
- Aug 17, 2011 1:15:59 PM (13 years ago)
- Location:
- trunk/Tools
- Files:
-
- 5 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html
r93029 r93236 40 40 </div> 41 41 <div class="recent-history"></div> 42 <div class="results-detail ">42 <div class="results-detail results-view old-results-view"> 43 43 <div class="toolbar"> 44 44 <div class="actions"> … … 62 62 <script src="ui/results.js"></script> 63 63 <script src="model.js"></script> 64 <script src="controllers.js"></script> 64 65 <script src="main.js"></script> 65 66 </body> -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css
r93029 r93236 272 272 } 273 273 274 /*** results-detail ***/ 275 276 .results-detail { 274 /*** results-view ***/ 275 276 /* FIXME: Remove this once garden-o-matic switches to the new results view. */ 277 .old-results-view { 277 278 display: none; 278 279 position: fixed; 279 background-color: #f5f5f5;280 top: 25%;281 280 left: 0px; 282 281 right: 0px; 282 top: 25%; 283 283 bottom: 0px; 284 284 } 285 285 286 .results-detail .toolbar { 286 .results-view { 287 background-color: #f5f5f5; 288 } 289 290 .results-view .toolbar { 287 291 border-top: 1px solid #c6c6c6; 288 292 border-bottom: 1px solid #c6c6c6; 289 293 } 290 294 291 .results- detail .toolbar .status{295 .results-view .toolbar .selector { 292 296 font-size: 11px; 293 297 font-weight: bold; … … 298 302 } 299 303 300 .results-detail .toolbar .status .builder-name { 301 font-weight: normal; 302 padding-left: 20px; 303 } 304 305 .results-detail .toolbar .status .selected { 306 font-style: italic; 307 } 308 309 .results-detail .toolbar .actions { 304 .results-view .test-selector { 305 width: 400px; 306 margin-right: 6px; 307 } 308 309 .results-view .toolbar .actions { 310 310 float: right; 311 311 } 312 312 313 .results-detail .content{313 .results-detail td { 314 314 background-color: white; 315 315 } -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js
r93029 r93236 172 172 'builderName': failureDetails.attr(config.kBuilderNameAttr), 173 173 'testName': failureDetails.attr(config.kTestNameAttr), 174 'failureTypeList': failureDetails.attr(config.kFailureTypesAttr).split(' '),174 'failureTypeList': results.failureTypeList(failureDetails.attr(config.kFailureTypesAttr)), 175 175 } 176 176 } -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js
r92875 r93236 164 164 }; 165 165 166 results.failureTypeList = function(failureBlob) 167 { 168 return failureBlob.split(' '); 169 }; 170 166 171 results.canRebaseline = function(failureTypeList) 167 172 { … … 206 211 results.unexpectedResults = function(resultNode) 207 212 { 208 var actualResults = result Node.actual.split(' ');209 var expectedResults = addImpliedExpectations(result Node.expected.split(' '))213 var actualResults = results.failureTypeList(resultNode.actual); 214 var expectedResults = addImpliedExpectations(results.failureTypeList(resultNode.expected)) 210 215 211 216 return $.grep(actualResults, function(result) { … … 214 219 }; 215 220 221 function isExpectedOrUnexpectedFailure(resultNode) 222 { 223 if (!resultNode) 224 return false; 225 var actualResults = results.failureTypeList(resultNode.actual); 226 if (anyIsSuccess(actualResults)) 227 return false; 228 return anyIsFailure(actualResults); 229 } 230 216 231 function isUnexpectedFailure(resultNode) 217 232 { 218 233 if (!resultNode) 219 234 return false; 220 if (anyIsSuccess(result Node.actual.split(' ')))235 if (anyIsSuccess(results.failureTypeList(resultNode.actual))) 221 236 return false; 222 237 return anyIsFailure(results.unexpectedResults(resultNode)); … … 227 242 if (!resultNode) 228 243 return false; 229 if (anyIsFailure(result Node.actual.split(' ')))244 if (anyIsFailure(results.failureTypeList(resultNode.actual))) 230 245 return false; 231 246 return anyIsSuccess(results.unexpectedResults(resultNode)); … … 236 251 return !!node.actual; 237 252 } 253 254 results.expectedOrUnexpectedFailures = function(resultsTree) 255 { 256 return base.filterTree(resultsTree.tests, isResultNode, isExpectedOrUnexpectedFailure); 257 }; 238 258 239 259 results.unexpectedFailures = function(resultsTree) … … 260 280 return resultsByTest; 261 281 } 282 283 results.expectedOrUnexpectedFailuresByTest = function(resultsByBuilder) 284 { 285 return resultsByTest(resultsByBuilder, results.expectedOrUnexpectedFailures); 286 }; 262 287 263 288 results.unexpectedFailuresByTest = function(resultsByBuilder) -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html
r93152 r93236 28 28 <link rel="stylesheet" href="../../../../../Source/ThirdParty/qunit/qunit/qunit.css"> 29 29 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 30 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script> 30 31 <script src="../../../../../Source/ThirdParty/qunit/qunit/qunit.js"></script> 31 32 </head> … … 54 55 <script src="ui.js"></script> 55 56 <script src="ui/results.js"></script> 57 <script src="controllers.js"></script> <!-- This script is slightly of order. --> 58 <script src="ui/results_unittests.js"></script> 56 59 <script src="ui_unittests.js"></script> 57 60 <script src="model.js"></script> -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js
r93029 r93236 28 28 (function () { 29 29 30 function displayURLForBuilder(builderName)30 ui.displayURLForBuilder = function(builderName) 31 31 { 32 32 return 'http://build.chromium.org/p/chromium.webkit/waterfall?' + $.param({ … … 35 35 } 36 36 37 function displayNameForBuilder(builderName)37 ui.displayNameForBuilder = function(builderName) 38 38 { 39 39 return builderName.replace(/Webkit /, ''); … … 58 58 var listElement = $('<li><a target="_blank"></a></li>'); 59 59 list.append(listElement); 60 $('a', listElement).attr('href', displayURLForBuilder(builderName)).text(displayNameForBuilder(builderName));60 $('a', listElement).attr('href', ui.displayURLForBuilder(builderName)).text(ui.displayNameForBuilder(builderName)); 61 61 }); 62 62 … … 92 92 $.each(config.kBuilders, function(index, builderName) { 93 93 var block = $('<td class="builder"></td>'); 94 block.attr('title', displayNameForBuilder(builderName));94 block.attr('title', ui.displayNameForBuilder(builderName)); 95 95 block.attr(config.kBuilderNameAttr, builderName); 96 96 … … 133 133 if (!failureTypes) 134 134 return 135 var failureTypeList = failureTypes.split(' ');135 var failureTypeList = results.failureTypeList(failureTypes); 136 136 var builderName = $(this).attr(config.kBuilderNameAttr); 137 137 failureInfoList.push({ -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results.js
r93029 r93236 1 /* 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 1 26 var ui = ui || {}; 2 27 ui.results = ui.results || {}; … … 112 137 }); 113 138 139 ui.results.ResultsDetails = base.extends('div', { 140 init: function(delegate) 141 { 142 this.className = 'results-detail'; 143 this._delegate = delegate; 144 }, 145 show: function(failureInfo) { 146 this._delegate.fetchResultsURLs(failureInfo, function(resultsURLs) { 147 var resultsGrid = new ui.results.ResultsGrid(); 148 resultsGrid.addResults(resultsURLs); 149 $(this).empty().append(resultsGrid); 150 }.bind(this)); 151 }, 152 }); 153 154 ui.results.TestSelector = base.extends('input', { 155 init: function() 156 { 157 this.className = 'test-selector'; 158 this.type = 'text'; 159 this.placeholder = 'Test name'; 160 }, 161 setTestList: function(testNameList) 162 { 163 $(this).autocomplete({ 164 source: testNameList, 165 select: function(event, selected) { 166 $(this).trigger('testselected', [selected.item.value]); 167 }.bind(this) 168 }); 169 } 170 }); 171 172 ui.results.BuilderSelector = base.extends('select', { 173 init: function() 174 { 175 this.className = 'builder-selector'; 176 $(this).hide(); 177 $(this).change(function() { 178 $(this).trigger('builderselected'); 179 }.bind(this)); 180 }, 181 show: function(builderNameList) { 182 $(this).empty(); 183 $(this).show(); 184 builderNameList.forEach(function(builderName) { 185 var builderElement = document.createElement('option'); 186 builderElement.textContent = ui.displayNameForBuilder(builderName); 187 builderElement.value = builderName; 188 this.appendChild(builderElement); 189 }.bind(this)); 190 }, 191 select: function(builderName) { 192 var builderIndex = -1; 193 for (var i = 0; i < this.options.length; ++i) { 194 if (this.options[i].value == builderName) { 195 builderIndex = i; 196 break; 197 } 198 } 199 if (builderIndex == -1) 200 return; 201 this.selectedIndex = builderIndex; 202 }, 203 selectedBuilder: function() { 204 if (this.selectedIndex == -1) 205 return; 206 return this.options[this.selectedIndex].value; 207 } 208 }); 209 210 ui.results.Actions = base.extends('div', { 211 init: function() 212 { 213 this.className = 'actions'; 214 this.innerHTML = '<button class="rebaseline default">Rebaseline</button>' + 215 '<button class="previous">◀</button>' + 216 '<button class="next">▶</button>'; 217 this._routeClickEvent('.rebaseline', 'rebaseline'); 218 this._routeClickEvent('.previous', 'previous'); 219 this._routeClickEvent('.next', 'next'); 220 }, 221 _routeClickEvent: function(selector, eventName) { 222 $(selector, this).bind('click', function() { 223 $(this).trigger(eventName); 224 }.bind(this)); 225 } 226 }); 227 228 ui.results.View = base.extends('div', { 229 init: function(delegate) 230 { 231 this.className = 'results-view'; 232 this.innerHTML = '<div class="toolbar"><div class="selector"></div></div><div class="content"></div>'; 233 234 this._testSelector = new ui.results.TestSelector(); 235 this._builderSelector = new ui.results.BuilderSelector(); 236 this._resultsDetails = new ui.results.ResultsDetails(delegate); 237 238 $('.toolbar', this).prepend(new ui.results.Actions()) 239 $('.selector', this).append(this._testSelector).append(this._builderSelector); 240 $('.content', this).append(this._resultsDetails); 241 }, 242 setTestList: function(testNameList) 243 { 244 this._testSelector.setTestList(testNameList); 245 }, 246 currentTestName: function() 247 { 248 return this._testSelector.value; 249 }, 250 currentBuilderName: function() 251 { 252 return this._builderSelector.selectedBuilder(); 253 }, 254 setBuilderList: function(buildNameList) 255 { 256 this._builderSelector.show(buildNameList); 257 }, 258 showResults: function(failureInfo) 259 { 260 this._testSelector.value = failureInfo.testName; 261 this._builderSelector.select(failureInfo.builderName); 262 this._resultsDetails.show(failureInfo); 263 } 264 }); 265 114 266 })(); -
trunk/Tools/ChangeLog
r93235 r93236 1 2011-08-17 Adam Barth <abarth@webkit.org> 2 3 garden-o-matic should be able to rebaseline expected failures 4 https://bugs.webkit.org/show_bug.cgi?id=66204 5 6 Reviewed by Dimitri Glazkov. 7 8 This patch introduces a new view for displaying expect, actual, and 9 differences between results. The new view also has a fledgling 10 controller that handles some basic operations. The new view is 11 exercised by rebaseline.html, which lets you rebaselines expected 12 failures, but the new view is not fully integrated into 13 garden-o-matic.html 14 15 More patches will be required to make this stuff fully working, but 16 this patch was already somewhat spiraling out of control. Hopefully 17 this patch will serve as a good starting point for further development. 18 19 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers: Added. 20 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers.js: Added. 21 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers/rebaseline.js: Added. 22 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html: 23 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css: 24 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js: 25 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/rebaseline.html: Added. 26 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js: 27 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html: 28 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js: 29 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results.js: 30 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results_unittests.js: Added. 31 1 32 2011-08-16 Chang Shu <cshu@webkit.org> 2 33
Note: See TracChangeset
for help on using the changeset viewer.