Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1583)

Unified Diff: Tools/GardeningServer/scripts/net_unittests.js

Issue 401163002: Fix exceptions when running the tests. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rename function Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Tools/GardeningServer/scripts/treestatus_unittests.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Tools/GardeningServer/scripts/net_unittests.js
diff --git a/Tools/GardeningServer/scripts/net_unittests.js b/Tools/GardeningServer/scripts/net_unittests.js
index 193d3d4f7ce944d53ecfd56c16bf9f6195211cd4..fdb7fd263fc22d2dfc4fffe5ce8b768c6e559a7e 100644
--- a/Tools/GardeningServer/scripts/net_unittests.js
+++ b/Tools/GardeningServer/scripts/net_unittests.js
@@ -29,6 +29,8 @@ function NetworkSimulator()
this._pendingPromises = [];
};
+NetworkSimulator._testInProgress = false;
+
NetworkSimulator.prototype.schedulePromise = function(promise) {
this._pendingPromises.push(promise);
return promise;
@@ -39,41 +41,62 @@ NetworkSimulator.prototype.resolvePromises = function() {
return new Promise(function(resolve, reject) {
var pendingPromises = self._pendingPromises;
self._pendingPromises = [];
- function all_resolved (results) {
+ function allResolved(results) {
if (self._pendingPromises.length) {
resolve(self.resolvePromises());
return;
}
resolve(results);
}
- Promise.all(pendingPromises).then(all_resolved, all_resolved);
+ Promise.all(pendingPromises).then(allResolved, allResolved);
});
};
NetworkSimulator.prototype.runTest = function(testCase)
{
+ if (NetworkSimulator._testInProgress) {
+ ok(false, "runTest calls cannot be nested");
+ start();
+ return;
+ }
+
+ NetworkSimulator._testInProgress = true;
+
var self = this;
- var realNet = window.net;
return new Promise(function(resolve, reject) {
+ var realNet = window.net;
+
+ function reset() {
+ window.net = realNet;
+ NetworkSimulator._testInProgress = false;
+ }
// All net.* methods should return promises. This watches all
// promises generated by test-overridden methods.
window.net = {};
['probe', 'jsonp', 'get', 'post',
'ajax', 'json', 'xml'].forEach(function(method) {
- if (method in self) {
- net[method] = function() {
- return self.schedulePromise(self[method].apply(self, arguments));
- };
- };
- });
+ if (method in self) {
+ net[method] = function() {
+ return self.schedulePromise(self[method].apply(self, arguments));
+ };
+ };
+ });
+
+ try {
+ testCase();
+ } catch(e) {
+ // Make sure errors thrown in the test case don't leave window.net in a bad state.
+ reset();
+ ok(false, "Test case threw an error:" + e);
+ }
- testCase();
self.resolvePromises().then(function() {
- window.net = realNet;
+ reset();
equal(window.net, realNet);
resolve();
}).catch(function(e) {
+ reset();
ok(false, "Failed to finish test: " + e);
});
});
« no previous file with comments | « no previous file | Tools/GardeningServer/scripts/treestatus_unittests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698