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 (function () { 27 28 module("checkout"); 29 30 asyncTest("lastBlinkRollRevision", 0, function() { 31 var simulator = new NetworkSimulator(); 32 33 var requests = []; 34 simulator.get = function(url) 35 { 36 requests.push([url]); 37 return Promise.resolve(); 38 }; 39 40 simulator.ajax = function(options) 41 { 42 if (options.url.indexOf('/ping') == -1) { 43 ok(false, 'Received non-ping ajax request: ' + options.url); 44 return Promise.reject('Received non-ping ajax request: ' + options.url); 45 } 46 return Promise.resolve(); 47 }; 48 49 simulator.runTest(function() { 50 checkout.lastBlinkRollRevision(function() { 51 ok(true); 52 }, function() { 53 ok(false, 'Checkout should be available.'); 54 }); 55 }).then(function() { 56 deepEqual(requests, [ 57 ["/lastroll"] 58 ]); 59 start(); 60 });; 61 }); 62 63 asyncTest("rebaseline", 3, function() { 64 var simulator = new NetworkSimulator(); 65 66 var requests = []; 67 simulator.post = function(url, body) 68 { 69 requests.push([url, body]); 70 return Promise.resolve(); 71 }; 72 simulator.ajax = function(options) 73 { 74 if (options.url.indexOf('/ping') == -1) { 75 ok(false, 'Received non-ping ajax request: ' + options.url); 76 return Promise.reject('Received non-ping ajax request: ' + options.url); 77 } 78 return Promise.resolve(); 79 }; 80 81 var kExpectedTestNameProgressStack = [ 82 'fast/test.html', 83 'another/test.svg', 84 'another/test.svg', // This is the first one. 85 ]; 86 87 simulator.runTest(function() { 88 checkout.rebaseline([{ 89 'builderName': 'WebKit Linux', 90 'testName': 'another/test.svg', 91 'failureTypeList': ['IMAGE'], 92 }, { 93 'builderName': 'WebKit Mac10.6', 94 'testName': 'another/test.svg', 95 'failureTypeList': ['IMAGE', 'TEXT', 'IMAGE+TEXT'], 96 }, { 97 'builderName': 'Webkit Win7', 98 'testName': 'fast/test.html', 99 'failureTypeList': ['IMAGE+TEXT'], 100 }], function(failureInfo) { 101 equals(failureInfo.testName, kExpectedTestNameProgressStack.pop()); 102 }, function() { 103 ok(false, 'There are no debug bots in the list'); 104 }).catch().then(function() { 105 ok(true); 106 }, function() { 107 ok(false, 'Checkout should be available.'); 108 }); 109 }).then(function() { 110 111 deepEqual(requests, [ 112 ["/rebaselineall", 113 JSON.stringify({ 114 "another/test.svg": { 115 "WebKit Linux": ["png"], 116 "WebKit Mac10.6": ["png","txt"]}, 117 "fast/test.html": { 118 "Webkit Win7": ["txt","png"] 119 }})] 120 ]); 121 start(); 122 }); 123 }); 124 125 asyncTest("rebaseline-debug-bot", 4, function() { 126 var simulator = new NetworkSimulator(); 127 simulator.post = function(url, body) 128 { 129 return Promise.resolve(); 130 }; 131 simulator.ajax = function(options) 132 { 133 return Promise.resolve(); 134 }; 135 136 simulator.runTest(function() { 137 checkout.rebaseline([{ 138 'builderName': 'WebKit Linux (dbg)', 139 'testName': 'another/test.svg', 140 'failureTypeList': ['IMAGE'], 141 }], function(failureInfo) { 142 ok(true); 143 }, function(failureInfo) { 144 ok(true); 145 }).then(function() { 146 ok(true); 147 }, function() { 148 ok(false); 149 }); 150 }).then(start); 151 }); 152 153 })(); 154