| OLD | NEW |
| 1 // extension_apitest.js | 1 // extension_apitest.js |
| 2 // mini-framework for ExtensionApiTest browser tests | 2 // mini-framework for ExtensionApiTest browser tests |
| 3 | 3 |
| 4 var chrome = chrome || {}; | 4 var chrome = chrome || {}; |
| 5 (function() { | 5 (function() { |
| 6 chrome.test = chrome.test || {}; | 6 chrome.test = chrome.test || {}; |
| 7 | 7 |
| 8 chrome.test.tests = chrome.test.tests || []; | 8 chrome.test.tests = chrome.test.tests || []; |
| 9 | 9 |
| 10 var completed = false; | 10 var completed = false; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 complete(); | 41 complete(); |
| 42 }; | 42 }; |
| 43 | 43 |
| 44 function allTestsSucceeded() { | 44 function allTestsSucceeded() { |
| 45 console.log("All tests succeeded"); | 45 console.log("All tests succeeded"); |
| 46 if (completed) throw "completed"; | 46 if (completed) throw "completed"; |
| 47 | 47 |
| 48 chrome.test.notifyPass(); | 48 chrome.test.notifyPass(); |
| 49 complete(); | 49 complete(); |
| 50 } | 50 } |
| 51 | 51 |
| 52 var pendingCallbacks = 0; | 52 var pendingCallbacks = 0; |
| 53 | 53 |
| 54 function callbackAdded() { | 54 chrome.test.callbackAdded = function () { |
| 55 pendingCallbacks++; | 55 pendingCallbacks++; |
| 56 }; | |
| 57 | 56 |
| 58 function callbackCompleted() { | 57 return function() { |
| 59 pendingCallbacks--; | 58 pendingCallbacks--; |
| 60 if (pendingCallbacks == 0) { | 59 if (pendingCallbacks == 0) { |
| 61 chrome.test.succeed(); | 60 chrome.test.succeed(); |
| 61 } |
| 62 } | 62 } |
| 63 }; | 63 }; |
| 64 | 64 |
| 65 chrome.test.runNextTest = function() { | 65 chrome.test.runNextTest = function() { |
| 66 chrome.test.assertEq(pendingCallbacks, 0); | 66 chrome.test.assertEq(pendingCallbacks, 0); |
| 67 lastTest = currentTest; | 67 lastTest = currentTest; |
| 68 currentTest = chrome.test.tests.shift(); | 68 currentTest = chrome.test.tests.shift(); |
| 69 if (!currentTest) { | 69 if (!currentTest) { |
| 70 allTestsSucceeded(); | 70 allTestsSucceeded(); |
| 71 return; | 71 return; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 chrome.test.fail(msg); | 141 chrome.test.fail(msg); |
| 142 } | 142 } |
| 143 }; | 143 }; |
| 144 | 144 |
| 145 // Wrapper for generating test functions, that takes care of calling | 145 // Wrapper for generating test functions, that takes care of calling |
| 146 // assertNoLastError() and (optionally) succeed() for you. | 146 // assertNoLastError() and (optionally) succeed() for you. |
| 147 chrome.test.callback = function(func, expectedError) { | 147 chrome.test.callback = function(func, expectedError) { |
| 148 if (func) { | 148 if (func) { |
| 149 chrome.test.assertEq(typeof(func), 'function'); | 149 chrome.test.assertEq(typeof(func), 'function'); |
| 150 } | 150 } |
| 151 callbackAdded(); | 151 var callbackCompleted = chrome.test.callbackAdded(); |
| 152 | 152 |
| 153 return function() { | 153 return function() { |
| 154 if (expectedError == null) { | 154 if (expectedError == null) { |
| 155 chrome.test.assertNoLastError(); | 155 chrome.test.assertNoLastError(); |
| 156 } else { | 156 } else { |
| 157 chrome.test.assertEq(typeof(expectedError), 'string'); | 157 chrome.test.assertEq(typeof(expectedError), 'string'); |
| 158 chrome.test.assertEq(expectedError, chrome.extension.lastError.message); | 158 chrome.test.assertEq(expectedError, chrome.extension.lastError.message); |
| 159 } | 159 } |
| 160 | 160 |
| 161 if (func) { | 161 if (func) { |
| 162 safeFunctionApply(func, arguments); | 162 safeFunctionApply(func, arguments); |
| 163 } | 163 } |
| 164 | 164 |
| 165 callbackCompleted(); | 165 callbackCompleted(); |
| 166 }; | 166 }; |
| 167 }; | 167 }; |
| 168 | 168 |
| 169 chrome.test.listenOnce = function(event, func) { | 169 chrome.test.listenOnce = function(event, func) { |
| 170 callbackAdded(); | 170 var callbackCompleted = chrome.test.callbackAdded(); |
| 171 var listener = function() { | 171 var listener = function() { |
| 172 event.removeListener(listener); | 172 event.removeListener(listener); |
| 173 safeFunctionApply(func, arguments); | 173 safeFunctionApply(func, arguments); |
| 174 callbackCompleted(); | 174 callbackCompleted(); |
| 175 }; | 175 }; |
| 176 event.addListener(listener); | 176 event.addListener(listener); |
| 177 }; | 177 }; |
| 178 | 178 |
| 179 chrome.test.listenForever = function(event, func) { | 179 chrome.test.listenForever = function(event, func) { |
| 180 callbackAdded(); | 180 var callbackCompleted = chrome.test.callbackAdded(); |
| 181 | 181 |
| 182 var listener = function() { | 182 var listener = function() { |
| 183 safeFunctionApply(func, arguments); | 183 safeFunctionApply(func, arguments); |
| 184 }; | 184 }; |
| 185 | 185 |
| 186 var done = {}; | 186 var done = function() { |
| 187 done.doneListening = function() { | |
| 188 event.removeListener(listener); | 187 event.removeListener(listener); |
| 189 callbackCompleted(); | 188 callbackCompleted(); |
| 190 }; | 189 }; |
| 191 | 190 |
| 192 event.addListener(listener); | 191 event.addListener(listener); |
| 193 return done; | 192 return done; |
| 194 }; | 193 }; |
| 195 | 194 |
| 196 chrome.test.callbackPass = function(func) { | 195 chrome.test.callbackPass = function(func) { |
| 197 return chrome.test.callback(func); | 196 return chrome.test.callback(func); |
| 198 }; | 197 }; |
| 199 | 198 |
| 200 chrome.test.callbackFail = function(expectedError) { | 199 chrome.test.callbackFail = function(expectedError) { |
| 201 return chrome.test.callback(null, expectedError); | 200 return chrome.test.callback(null, expectedError); |
| 202 }; | 201 }; |
| 203 | 202 |
| 204 chrome.test.runTests = function(tests) { | 203 chrome.test.runTests = function(tests) { |
| 205 chrome.test.tests = tests; | 204 chrome.test.tests = tests; |
| 206 chrome.test.runNextTest(); | 205 chrome.test.runNextTest(); |
| 207 }; | 206 }; |
| 208 })(); | 207 })(); |
| OLD | NEW |