| OLD | NEW |
| (Empty) |
| 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 | |
| 26 var unittest = unittest || {}; | |
| 27 | |
| 28 (function () { | |
| 29 | |
| 30 module("results"); | |
| 31 | |
| 32 unittest.kExampleResultsJSON = { | |
| 33 "tests": { | |
| 34 "scrollbars": { | |
| 35 "custom-scrollbar-with-incomplete-style.html": { | |
| 36 "expected": "IMAGE", | |
| 37 "actual": "IMAGE" | |
| 38 }, | |
| 39 "expected-wontfix": { | |
| 40 "expected": "IMAGE", | |
| 41 "actual": "IMAGE", | |
| 42 "wontfix": true | |
| 43 }, | |
| 44 "unexpected-wontfix": { | |
| 45 "expected": "IMAGE", | |
| 46 "actual": "TEXT", | |
| 47 "wontfix": true | |
| 48 }, | |
| 49 "flaky-scrollbar.html": { | |
| 50 "expected": "PASS", | |
| 51 "actual": "PASS TEXT" | |
| 52 }, | |
| 53 "unexpected-failing-flaky-scrollbar.html": { | |
| 54 "expected": "TEXT", | |
| 55 "actual": "TIMEOUT TEXT" | |
| 56 }, | |
| 57 "unexpected-pass.html": { | |
| 58 "expected": "FAIL", | |
| 59 "actual": "PASS" | |
| 60 } | |
| 61 }, | |
| 62 "userscripts": { | |
| 63 "user-script-video-document.html": { | |
| 64 "expected": "FAIL", | |
| 65 "actual": "TEXT" | |
| 66 }, | |
| 67 "another-test.html": { | |
| 68 "expected": "PASS", | |
| 69 "actual": "TEXT" | |
| 70 } | |
| 71 }, | |
| 72 }, | |
| 73 "skipped": 339, | |
| 74 "num_regressions": 14, | |
| 75 "interrupted": false, | |
| 76 "layout_tests_dir": "\/mnt\/data\/b\/build\/slave\/Webkit_Linux\/build\/src\
/third_party\/WebKit\/LayoutTests", | |
| 77 "version": 3, | |
| 78 "num_passes": 15566, | |
| 79 "has_pretty_patch": false, | |
| 80 "fixable": 1233, | |
| 81 "num_flaky":1, | |
| 82 "uses_expectations_file": true, | |
| 83 "has_wdiff": true, | |
| 84 "revision": "90430" | |
| 85 }; | |
| 86 | |
| 87 test("ResultAnalyzer", 55, function() { | |
| 88 var analyzer; | |
| 89 | |
| 90 analyzer = new results.ResultAnalyzer({expected: 'PASS', actual: 'TEXT'}); | |
| 91 ok(analyzer.expectedToSucceed()); | |
| 92 ok(analyzer.hasUnexpectedFailures()); | |
| 93 deepEqual(analyzer.unexpectedResults(), ['TEXT']); | |
| 94 ok(!analyzer.succeeded()); | |
| 95 ok(!analyzer.flaky()); | |
| 96 | |
| 97 analyzer = new results.ResultAnalyzer({expected: 'PASS TIMEOUT', actual: 'TE
XT'}); | |
| 98 ok(analyzer.expectedToSucceed()); | |
| 99 ok(analyzer.hasUnexpectedFailures()); | |
| 100 deepEqual(analyzer.unexpectedResults(), ['TEXT']); | |
| 101 ok(!analyzer.succeeded()); | |
| 102 ok(!analyzer.flaky()); | |
| 103 | |
| 104 analyzer = new results.ResultAnalyzer({expected: 'TEXT', actual: 'TEXT TIMEO
UT'}); | |
| 105 ok(!analyzer.expectedToSucceed()); | |
| 106 ok(analyzer.hasUnexpectedFailures()); | |
| 107 deepEqual(analyzer.unexpectedResults(), ['TIMEOUT']); | |
| 108 ok(!analyzer.succeeded()); | |
| 109 ok(analyzer.flaky()); | |
| 110 | |
| 111 analyzer = new results.ResultAnalyzer({expected: 'PASS', actual: 'TEXT TIMEO
UT'}); | |
| 112 ok(analyzer.expectedToSucceed()); | |
| 113 ok(analyzer.hasUnexpectedFailures()); | |
| 114 deepEqual(analyzer.unexpectedResults(), ['TEXT', 'TIMEOUT']); | |
| 115 ok(!analyzer.succeeded()); | |
| 116 ok(analyzer.flaky()); | |
| 117 | |
| 118 analyzer = new results.ResultAnalyzer({expected: 'PASS TIMEOUT', actual: 'PA
SS TIMEOUT'}); | |
| 119 ok(analyzer.expectedToSucceed()); | |
| 120 ok(!analyzer.hasUnexpectedFailures()); | |
| 121 deepEqual(analyzer.unexpectedResults(), []); | |
| 122 ok(analyzer.succeeded()); | |
| 123 ok(analyzer.flaky()); | |
| 124 | |
| 125 analyzer = new results.ResultAnalyzer({expected: 'PASS TIMEOUT', actual: 'TI
MEOUT PASS'}); | |
| 126 ok(analyzer.expectedToSucceed()); | |
| 127 ok(!analyzer.hasUnexpectedFailures()); | |
| 128 deepEqual(analyzer.unexpectedResults(), []); | |
| 129 ok(analyzer.succeeded()); | |
| 130 ok(analyzer.flaky()); | |
| 131 | |
| 132 analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'TIMEOUT'})
; | |
| 133 ok(!analyzer.expectedToSucceed()); | |
| 134 ok(analyzer.hasUnexpectedFailures()); | |
| 135 deepEqual(analyzer.unexpectedResults(), ['TIMEOUT']); | |
| 136 ok(!analyzer.succeeded()); | |
| 137 ok(!analyzer.flaky()); | |
| 138 | |
| 139 analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'IMAGE'}); | |
| 140 ok(!analyzer.expectedToSucceed()); | |
| 141 ok(analyzer.hasUnexpectedFailures()); | |
| 142 deepEqual(analyzer.unexpectedResults(), ['IMAGE']); | |
| 143 ok(!analyzer.succeeded()); | |
| 144 ok(!analyzer.flaky()); | |
| 145 | |
| 146 analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'AUDIO'}); | |
| 147 ok(!analyzer.expectedToSucceed()); | |
| 148 ok(!analyzer.hasUnexpectedFailures()); | |
| 149 deepEqual(analyzer.unexpectedResults(), []); | |
| 150 ok(!analyzer.succeeded()); | |
| 151 ok(!analyzer.flaky()); | |
| 152 | |
| 153 analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'TEXT'}); | |
| 154 ok(!analyzer.expectedToSucceed()); | |
| 155 ok(!analyzer.hasUnexpectedFailures()); | |
| 156 deepEqual(analyzer.unexpectedResults(), []); | |
| 157 ok(!analyzer.succeeded()); | |
| 158 ok(!analyzer.flaky()); | |
| 159 | |
| 160 analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'IMAGE+TEXT
'}); | |
| 161 ok(!analyzer.expectedToSucceed()); | |
| 162 ok(!analyzer.hasUnexpectedFailures()); | |
| 163 deepEqual(analyzer.unexpectedResults(), []); | |
| 164 ok(!analyzer.succeeded()); | |
| 165 ok(!analyzer.flaky()); | |
| 166 }); | |
| 167 | |
| 168 test("expectedFailures", 1, function() { | |
| 169 var expectedFailures = results.expectedFailures(unittest.kExampleResultsJSON
); | |
| 170 deepEqual(expectedFailures, { | |
| 171 "scrollbars/custom-scrollbar-with-incomplete-style.html": { | |
| 172 "expected": "IMAGE", | |
| 173 "actual": "IMAGE" | |
| 174 }, | |
| 175 "userscripts/user-script-video-document.html": { | |
| 176 "expected": "FAIL", | |
| 177 "actual": "TEXT" | |
| 178 } | |
| 179 }); | |
| 180 }); | |
| 181 | |
| 182 test("unexpectedFailures", 1, function() { | |
| 183 var unexpectedFailures = results.unexpectedFailures(unittest.kExampleResults
JSON); | |
| 184 deepEqual(unexpectedFailures, { | |
| 185 "userscripts/another-test.html": { | |
| 186 "expected": "PASS", | |
| 187 "actual": "TEXT" | |
| 188 } | |
| 189 }); | |
| 190 }); | |
| 191 | |
| 192 test("unexpectedFailuresByTest", 1, function() { | |
| 193 var unexpectedFailuresByTest = results.unexpectedFailuresByTest({ | |
| 194 "Mock Builder": unittest.kExampleResultsJSON | |
| 195 }); | |
| 196 deepEqual(unexpectedFailuresByTest, { | |
| 197 "userscripts/another-test.html": { | |
| 198 "Mock Builder": { | |
| 199 "expected": "PASS", | |
| 200 "actual": "TEXT" | |
| 201 } | |
| 202 } | |
| 203 }); | |
| 204 }); | |
| 205 | |
| 206 test("unexpectedSuccessesByTest", 1, function() { | |
| 207 var unexpectedFailuresByTest = results.unexpectedSuccessesByTest({ | |
| 208 "Mock Builder": unittest.kExampleResultsJSON | |
| 209 }); | |
| 210 deepEqual(unexpectedFailuresByTest, { | |
| 211 "scrollbars/unexpected-pass.html": { | |
| 212 "Mock Builder": { | |
| 213 "expected": "FAIL", | |
| 214 "actual": "PASS" | |
| 215 } | |
| 216 } | |
| 217 }); | |
| 218 }); | |
| 219 | |
| 220 test("failureInfoForTestAndBuilder", 1, function() { | |
| 221 var unexpectedFailuresByTest = results.unexpectedFailuresByTest({ | |
| 222 "Mock Builder": unittest.kExampleResultsJSON | |
| 223 }); | |
| 224 var failureInfo = results.failureInfoForTestAndBuilder(unexpectedFailuresByT
est, "userscripts/another-test.html", "Mock Builder"); | |
| 225 deepEqual(failureInfo, { | |
| 226 "testName": "userscripts/another-test.html", | |
| 227 "builderName": "Mock Builder", | |
| 228 "failureTypeList": ["TEXT"], | |
| 229 }); | |
| 230 }); | |
| 231 | |
| 232 test("resultKind", 12, function() { | |
| 233 equals(results.resultKind("http://example.com/foo-actual.txt"), "actual"); | |
| 234 equals(results.resultKind("http://example.com/foo-expected.txt"), "expected"
); | |
| 235 equals(results.resultKind("http://example.com/foo-diff.txt"), "diff"); | |
| 236 equals(results.resultKind("http://example.com/foo.bar-actual.txt"), "actual"
); | |
| 237 equals(results.resultKind("http://example.com/foo.bar-expected.txt"), "expec
ted"); | |
| 238 equals(results.resultKind("http://example.com/foo.bar-diff.txt"), "diff"); | |
| 239 equals(results.resultKind("http://example.com/foo-actual.png"), "actual"); | |
| 240 equals(results.resultKind("http://example.com/foo-expected.png"), "expected"
); | |
| 241 equals(results.resultKind("http://example.com/foo-diff.png"), "diff"); | |
| 242 equals(results.resultKind("http://example.com/foo-pretty-diff.html"), "diff"
); | |
| 243 equals(results.resultKind("http://example.com/foo-wdiff.html"), "diff"); | |
| 244 equals(results.resultKind("http://example.com/foo-xyz.html"), "unknown"); | |
| 245 }); | |
| 246 | |
| 247 test("resultType", 12, function() { | |
| 248 equals(results.resultType("http://example.com/foo-actual.txt"), "text"); | |
| 249 equals(results.resultType("http://example.com/foo-expected.txt"), "text"); | |
| 250 equals(results.resultType("http://example.com/foo-diff.txt"), "text"); | |
| 251 equals(results.resultType("http://example.com/foo.bar-actual.txt"), "text"); | |
| 252 equals(results.resultType("http://example.com/foo.bar-expected.txt"), "text"
); | |
| 253 equals(results.resultType("http://example.com/foo.bar-diff.txt"), "text"); | |
| 254 equals(results.resultType("http://example.com/foo-actual.png"), "image"); | |
| 255 equals(results.resultType("http://example.com/foo-expected.png"), "image"); | |
| 256 equals(results.resultType("http://example.com/foo-diff.png"), "image"); | |
| 257 equals(results.resultType("http://example.com/foo-pretty-diff.html"), "text"
); | |
| 258 equals(results.resultType("http://example.com/foo-wdiff.html"), "text"); | |
| 259 equals(results.resultType("http://example.com/foo.xyz"), "text"); | |
| 260 }); | |
| 261 | |
| 262 test("resultNodeForTest", 4, function() { | |
| 263 deepEqual(results.resultNodeForTest(unittest.kExampleResultsJSON, "userscrip
ts/another-test.html"), { | |
| 264 "expected": "PASS", | |
| 265 "actual": "TEXT" | |
| 266 }); | |
| 267 equals(results.resultNodeForTest(unittest.kExampleResultsJSON, "foo.html"),
null); | |
| 268 equals(results.resultNodeForTest(unittest.kExampleResultsJSON, "userscripts/
foo.html"), null); | |
| 269 equals(results.resultNodeForTest(unittest.kExampleResultsJSON, "userscripts/
foo/bar.html"), null); | |
| 270 }); | |
| 271 | |
| 272 test("walkHistory", 6, function() { | |
| 273 var simulator = new NetworkSimulator(); | |
| 274 | |
| 275 var keyMap = { | |
| 276 "Mock_Builder": { | |
| 277 "11108": { | |
| 278 "tests": { | |
| 279 "userscripts": { | |
| 280 "another-test.html": { | |
| 281 "expected": "PASS", | |
| 282 "actual": "TEXT" | |
| 283 } | |
| 284 }, | |
| 285 }, | |
| 286 "revision": "90430" | |
| 287 }, | |
| 288 "11107":{ | |
| 289 "tests": { | |
| 290 "userscripts": { | |
| 291 "user-script-video-document.html": { | |
| 292 "expected": "FAIL", | |
| 293 "actual": "TEXT" | |
| 294 }, | |
| 295 "another-test.html": { | |
| 296 "expected": "PASS", | |
| 297 "actual": "TEXT" | |
| 298 } | |
| 299 }, | |
| 300 }, | |
| 301 "revision": "90429" | |
| 302 }, | |
| 303 "11106":{ | |
| 304 "tests": { | |
| 305 "userscripts": { | |
| 306 "another-test.html": { | |
| 307 "expected": "PASS", | |
| 308 "actual": "TEXT" | |
| 309 } | |
| 310 }, | |
| 311 }, | |
| 312 "revision": "90426" | |
| 313 }, | |
| 314 "11105":{ | |
| 315 "tests": { | |
| 316 "userscripts": { | |
| 317 "user-script-video-document.html": { | |
| 318 "expected": "FAIL", | |
| 319 "actual": "TEXT" | |
| 320 }, | |
| 321 }, | |
| 322 }, | |
| 323 "revision": "90424" | |
| 324 }, | |
| 325 }, | |
| 326 "Another_Builder": { | |
| 327 "22202":{ | |
| 328 "tests": { | |
| 329 "userscripts": { | |
| 330 "another-test.html": { | |
| 331 "expected": "PASS", | |
| 332 "actual": "TEXT" | |
| 333 } | |
| 334 }, | |
| 335 }, | |
| 336 "revision": "90426" | |
| 337 }, | |
| 338 "22201":{ | |
| 339 "tests": { | |
| 340 }, | |
| 341 "revision": "90425" | |
| 342 }, | |
| 343 }, | |
| 344 }; | |
| 345 | |
| 346 simulator.jsonp = function(url, callback) { | |
| 347 simulator.scheduleCallback(function() { | |
| 348 var result = keyMap[/[^/]+_Builder/.exec(url)][/\d+/.exec(url)]; | |
| 349 callback(result ? result : {}); | |
| 350 }); | |
| 351 }; | |
| 352 | |
| 353 simulator.get = function(url, callback) { | |
| 354 simulator.scheduleCallback(function() { | |
| 355 if (/Mock_Builder/.test(url)) | |
| 356 callback('<a href="11101/"></a><a href="11102/"></a><a href="111
03/"></a><a href="11104/"></a><a href="11105/"></a><a href="11106/"></a><a href=
"11107/"></a><a href="11108/"></a>'); | |
| 357 else if (/Another_Builder/.test(url)) | |
| 358 callback('<a href="22201/"></a><a href="22202/"></a>'); | |
| 359 else | |
| 360 ok(false, 'Unexpected URL: ' + url); | |
| 361 }); | |
| 362 }; | |
| 363 | |
| 364 simulator.runTest(function() { | |
| 365 results.regressionRangeForFailure("Mock Builder", "userscripts/another-t
est.html", function(oldestFailingRevision, newestPassingRevision) { | |
| 366 equals(oldestFailingRevision, 90426); | |
| 367 equals(newestPassingRevision, 90424); | |
| 368 }); | |
| 369 | |
| 370 results.unifyRegressionRanges(["Mock Builder", "Another Builder"], "user
scripts/another-test.html", function(oldestFailingRevision, newestPassingRevisio
n) { | |
| 371 equals(oldestFailingRevision, 90426); | |
| 372 equals(newestPassingRevision, 90425); | |
| 373 }); | |
| 374 | |
| 375 results.countFailureOccurences(["Mock Builder", "Another Builder"], "use
rscripts/another-test.html", function(failureCount) { | |
| 376 equals(failureCount, 4); | |
| 377 }); | |
| 378 }); | |
| 379 }); | |
| 380 | |
| 381 test("walkHistory (no revision)", 3, function() { | |
| 382 var simulator = new NetworkSimulator(); | |
| 383 | |
| 384 var keyMap = { | |
| 385 "Mock_Builder": { | |
| 386 "11103": { | |
| 387 "tests": { | |
| 388 "userscripts": { | |
| 389 "another-test.html": { | |
| 390 "expected": "PASS", | |
| 391 "actual": "TEXT" | |
| 392 } | |
| 393 }, | |
| 394 }, | |
| 395 "revision": "" | |
| 396 }, | |
| 397 "11102":{ | |
| 398 "tests": { | |
| 399 }, | |
| 400 "revision": "" | |
| 401 }, | |
| 402 }, | |
| 403 }; | |
| 404 | |
| 405 simulator.jsonp = function(url, callback) { | |
| 406 simulator.scheduleCallback(function() { | |
| 407 var result = keyMap[/[^/]+_Builder/.exec(url)][/\d+/.exec(url)]; | |
| 408 callback(result ? result : {}); | |
| 409 }); | |
| 410 }; | |
| 411 | |
| 412 simulator.get = function(url, callback) { | |
| 413 simulator.scheduleCallback(function() { | |
| 414 callback('<a href="11101/"></a><a href="11102/"></a><a href="11103/"
></a>'); | |
| 415 }); | |
| 416 }; | |
| 417 | |
| 418 | |
| 419 simulator.runTest(function() { | |
| 420 results.regressionRangeForFailure("Mock Builder", "userscripts/another-t
est.html", function(oldestFailingRevision, newestPassingRevision) { | |
| 421 equals(oldestFailingRevision, 0); | |
| 422 equals(newestPassingRevision, 0); | |
| 423 }); | |
| 424 }); | |
| 425 }); | |
| 426 | |
| 427 test("collectUnexpectedResults", 1, function() { | |
| 428 var dictionaryOfResultNodes = { | |
| 429 "foo": { | |
| 430 "expected": "IMAGE", | |
| 431 "actual": "IMAGE" | |
| 432 }, | |
| 433 "bar": { | |
| 434 "expected": "PASS", | |
| 435 "actual": "PASS TEXT" | |
| 436 }, | |
| 437 "baz": { | |
| 438 "expected": "TEXT", | |
| 439 "actual": "IMAGE" | |
| 440 }, | |
| 441 "qux": { | |
| 442 "expected": "PASS", | |
| 443 "actual": "TEXT" | |
| 444 }, | |
| 445 "taco": { | |
| 446 "expected": "PASS", | |
| 447 "actual": "TEXT" | |
| 448 }, | |
| 449 }; | |
| 450 | |
| 451 var collectedResults = results.collectUnexpectedResults(dictionaryOfResultNo
des); | |
| 452 deepEqual(collectedResults, ["TEXT", "IMAGE"]); | |
| 453 }); | |
| 454 | |
| 455 test("failureTypeToExtensionList", 5, function() { | |
| 456 deepEqual(results.failureTypeToExtensionList('TEXT'), ['txt']); | |
| 457 deepEqual(results.failureTypeToExtensionList('IMAGE+TEXT'), ['txt', 'png']); | |
| 458 deepEqual(results.failureTypeToExtensionList('IMAGE'), ['png']); | |
| 459 deepEqual(results.failureTypeToExtensionList('CRASH'), []); | |
| 460 deepEqual(results.failureTypeToExtensionList('TIMEOUT'), []); | |
| 461 }); | |
| 462 | |
| 463 test("canRebaseline", 6, function() { | |
| 464 ok(results.canRebaseline(['TEXT'])); | |
| 465 ok(results.canRebaseline(['IMAGE+TEXT', 'CRASH'])); | |
| 466 ok(results.canRebaseline(['IMAGE'])); | |
| 467 ok(!results.canRebaseline(['CRASH'])); | |
| 468 ok(!results.canRebaseline(['TIMEOUT'])); | |
| 469 ok(!results.canRebaseline([])); | |
| 470 }); | |
| 471 | |
| 472 test("fetchResultsURLs", 5, function() { | |
| 473 var simulator = new NetworkSimulator(); | |
| 474 | |
| 475 var probedURLs = []; | |
| 476 simulator.probe = function(url, options) | |
| 477 { | |
| 478 simulator.scheduleCallback(function() { | |
| 479 probedURLs.push(url); | |
| 480 if (base.endsWith(url, '.txt')) | |
| 481 options.success.call(); | |
| 482 else if (/taco.+png$/.test(url)) | |
| 483 options.success.call(); | |
| 484 else | |
| 485 options.error.call(); | |
| 486 }); | |
| 487 }; | |
| 488 | |
| 489 simulator.runTest(function() { | |
| 490 results.fetchResultsURLs({ | |
| 491 'builderName': "Mock Builder", | |
| 492 'testName': "userscripts/another-test.html", | |
| 493 'failureTypeList': ['IMAGE', 'CRASH'], | |
| 494 }, function(resultURLs) { | |
| 495 deepEqual(resultURLs, [ | |
| 496 "http://build.chromium.org/f/chromium/layout_test_results/Mock_B
uilder/results/layout-test-results/userscripts/another-test-crash-log.txt" | |
| 497 ]); | |
| 498 }); | |
| 499 results.fetchResultsURLs({ | |
| 500 'builderName': "Mock Builder", | |
| 501 'testName': "userscripts/another-test.html", | |
| 502 'failureTypeList': ['TIMEOUT'], | |
| 503 }, function(resultURLs) { | |
| 504 deepEqual(resultURLs, []); | |
| 505 }); | |
| 506 results.fetchResultsURLs({ | |
| 507 'builderName': "Mock Builder", | |
| 508 'testName': "userscripts/taco.html", | |
| 509 'failureTypeList': ['IMAGE', 'IMAGE+TEXT'], | |
| 510 }, function(resultURLs) { | |
| 511 deepEqual(resultURLs, [ | |
| 512 "http://build.chromium.org/f/chromium/layout_test_results/Mock_B
uilder/results/layout-test-results/userscripts/taco-expected.png", | |
| 513 "http://build.chromium.org/f/chromium/layout_test_results/Mock_B
uilder/results/layout-test-results/userscripts/taco-actual.png", | |
| 514 "http://build.chromium.org/f/chromium/layout_test_results/Mock_B
uilder/results/layout-test-results/userscripts/taco-diff.png", | |
| 515 "http://build.chromium.org/f/chromium/layout_test_results/Mock_B
uilder/results/layout-test-results/userscripts/taco-expected.txt", | |
| 516 "http://build.chromium.org/f/chromium/layout_test_results/Mock_B
uilder/results/layout-test-results/userscripts/taco-actual.txt", | |
| 517 "http://build.chromium.org/f/chromium/layout_test_results/Mock_B
uilder/results/layout-test-results/userscripts/taco-diff.txt", | |
| 518 ]); | |
| 519 }); | |
| 520 }); | |
| 521 | |
| 522 deepEqual(probedURLs, [ | |
| 523 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/another-test-expected.png", | |
| 524 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/another-test-actual.png", | |
| 525 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/another-test-diff.png", | |
| 526 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/another-test-crash-log.txt", | |
| 527 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/taco-expected.png", | |
| 528 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/taco-actual.png", | |
| 529 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/taco-diff.png", | |
| 530 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/taco-actual.txt", | |
| 531 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/taco-expected.txt", | |
| 532 "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/r
esults/layout-test-results/userscripts/taco-diff.txt", | |
| 533 ]); | |
| 534 }); | |
| 535 | |
| 536 test("fetchResultsByBuilder", 5, function() { | |
| 537 var simulator = new NetworkSimulator(); | |
| 538 | |
| 539 var probedURLs = []; | |
| 540 simulator.jsonp = function(url, callback) | |
| 541 { | |
| 542 simulator.scheduleCallback(function() { | |
| 543 probedURLs.push(url); | |
| 544 if (base.endsWith(url, 'MockBuilder2/r1%20(1)/full_results.json')) | |
| 545 callback({'MockBuildResults': true}); | |
| 546 else | |
| 547 callback({}); | |
| 548 }); | |
| 549 }; | |
| 550 | |
| 551 config.currentPlatform = 'gtk'; | |
| 552 | |
| 553 var oldCachedBuildInfos = builders.cachedBuildInfos; | |
| 554 builders.cachedBuildInfos = function(platform, builderName, callback) { | |
| 555 callback( | |
| 556 { | |
| 557 1: { | |
| 558 sourceStamp: { | |
| 559 revision: 1 | |
| 560 } | |
| 561 }, | |
| 562 2: { | |
| 563 sourceStamp: { | |
| 564 revision: 2 | |
| 565 } | |
| 566 } | |
| 567 | |
| 568 }); | |
| 569 }; | |
| 570 | |
| 571 var oldRecentBuildInfos = builders.recentBuildInfos; | |
| 572 builders.recentBuildInfos = function(callback) { | |
| 573 callback({ | |
| 574 'MockBuilder1': true, | |
| 575 'MockBuilder2': true | |
| 576 }); | |
| 577 }; | |
| 578 | |
| 579 simulator.runTest(function() { | |
| 580 results.fetchResultsByBuilder(['MockBuilder1', 'MockBuilder2'], function
(resultsByBuilder) { | |
| 581 deepEqual(resultsByBuilder, { | |
| 582 "MockBuilder2": { | |
| 583 "MockBuildResults": true, | |
| 584 "_buildLocation": { | |
| 585 "buildNumber": "1", | |
| 586 "revision": 1, | |
| 587 "url": "http://build.webkit.org/results/MockBuilder2/r1%
20(1)/full_results.json" | |
| 588 } | |
| 589 } | |
| 590 }); | |
| 591 }); | |
| 592 }); | |
| 593 | |
| 594 deepEqual(probedURLs, [ | |
| 595 "http://build.webkit.org/results/MockBuilder1/r2%20(2)/full_results.json
", | |
| 596 "http://build.webkit.org/results/MockBuilder2/r2%20(2)/full_results.json
", | |
| 597 "http://build.webkit.org/results/MockBuilder1/r1%20(1)/full_results.json
", | |
| 598 "http://build.webkit.org/results/MockBuilder2/r1%20(1)/full_results.json
" | |
| 599 ]); | |
| 600 | |
| 601 builders.cachedBuildInfos = oldCachedBuildInfos; | |
| 602 equal(builders.cachedBuildInfos, oldCachedBuildInfos, "Failed to restore rea
l base!"); | |
| 603 | |
| 604 builders.recentBuildInfos = oldRecentBuildInfos; | |
| 605 equal(builders.recentBuildInfos, oldRecentBuildInfos, "Failed to restore rea
l base!"); | |
| 606 }); | |
| 607 | |
| 608 })(); | |
| OLD | NEW |