Commit e9919b7f authored by Tristan Cavelier's avatar Tristan Cavelier

sinon.js updated

parent c62c5971
/** /**
* Sinon.JS 1.6.0, 2013/02/18 * Sinon.JS 1.7.3, 2013/06/20
* *
* @author Christian Johansen (christian@cjohansen.no) * @author Christian Johansen (christian@cjohansen.no)
* @author Contributors: https://github.com/cjohansen/Sinon.JS/blob/master/AUTHORS * @author Contributors: https://github.com/cjohansen/Sinon.JS/blob/master/AUTHORS
...@@ -33,9 +33,7 @@ ...@@ -33,9 +33,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
var sinon = (function () { this.sinon = (function () {
"use strict";
var buster = (function (setTimeout, B) { var buster = (function (setTimeout, B) {
var isNode = typeof require == "function" && typeof module == "object"; var isNode = typeof require == "function" && typeof module == "object";
var div = typeof document != "undefined" && document.createElement("div"); var div = typeof document != "undefined" && document.createElement("div");
...@@ -505,6 +503,10 @@ var sinon = (function (buster) { ...@@ -505,6 +503,10 @@ var sinon = (function (buster) {
} }
} }
function isRestorable (obj) {
return typeof obj === "function" && typeof obj.restore === "function" && obj.restore.sinon;
}
var sinon = { var sinon = {
wrapMethod: function wrapMethod(object, property, method) { wrapMethod: function wrapMethod(object, property, method) {
if (!object) { if (!object) {
...@@ -617,6 +619,10 @@ var sinon = (function (buster) { ...@@ -617,6 +619,10 @@ var sinon = (function (buster) {
return true; return true;
} }
if (aString == "[object Date]") {
return a.valueOf() === b.valueOf();
}
var prop, aLength = 0, bLength = 0; var prop, aLength = 0, bLength = 0;
for (prop in a) { for (prop in a) {
...@@ -631,11 +637,7 @@ var sinon = (function (buster) { ...@@ -631,11 +637,7 @@ var sinon = (function (buster) {
bLength += 1; bLength += 1;
} }
if (aLength != bLength) { return aLength == bLength;
return false;
}
return true;
}, },
functionName: function functionName(func) { functionName: function functionName(func) {
...@@ -755,6 +757,19 @@ var sinon = (function (buster) { ...@@ -755,6 +757,19 @@ var sinon = (function (buster) {
throw new TypeError("The constructor should be a function."); throw new TypeError("The constructor should be a function.");
} }
return sinon.stub(sinon.create(constructor.prototype)); return sinon.stub(sinon.create(constructor.prototype));
},
restore: function (object) {
if (object !== null && typeof object === "object") {
for (var prop in object) {
if (isRestorable(object[prop])) {
object[prop].restore();
}
}
}
else if (isRestorable(object)) {
object.restore();
}
} }
}; };
...@@ -1044,70 +1059,225 @@ var sinon = (function (buster) { ...@@ -1044,70 +1059,225 @@ var sinon = (function (buster) {
/*jslint eqeqeq: false, onevar: false, plusplus: false*/ /*jslint eqeqeq: false, onevar: false, plusplus: false*/
/*global module, require, sinon*/ /*global module, require, sinon*/
/** /**
* Spy functions * Spy calls
* *
* @author Christian Johansen (christian@cjohansen.no) * @author Christian Johansen (christian@cjohansen.no)
* @author Maximilian Antoni (mail@maxantoni.de)
* @license BSD * @license BSD
* *
* Copyright (c) 2010-2013 Christian Johansen * Copyright (c) 2010-2013 Christian Johansen
* Copyright (c) 2013 Maximilian Antoni
*/ */
var commonJSModule = typeof module == "object" && typeof require == "function";
if (!this.sinon && commonJSModule) {
var sinon = require("../sinon");
}
(function (sinon) { (function (sinon) {
var commonJSModule = typeof module == "object" && typeof require == "function"; function throwYieldError(proxy, text, args) {
var spyCall; var msg = sinon.functionName(proxy) + text;
var callId = 0; if (args.length) {
var push = [].push; msg += " Received [" + slice.call(args).join(", ") + "]";
}
throw new Error(msg);
}
var slice = Array.prototype.slice; var slice = Array.prototype.slice;
if (!sinon && commonJSModule) { var callProto = {
sinon = require("../sinon"); calledOn: function calledOn(thisValue) {
if (sinon.match && sinon.match.isMatcher(thisValue)) {
return thisValue.test(this.thisValue);
} }
return this.thisValue === thisValue;
},
if (!sinon) { calledWith: function calledWith() {
return; for (var i = 0, l = arguments.length; i < l; i += 1) {
if (!sinon.deepEqual(arguments[i], this.args[i])) {
return false;
}
} }
function spy(object, property) { return true;
if (!property && typeof object == "function") { },
return spy.create(object);
calledWithMatch: function calledWithMatch() {
for (var i = 0, l = arguments.length; i < l; i += 1) {
var actual = this.args[i];
var expectation = arguments[i];
if (!sinon.match || !sinon.match(expectation).test(actual)) {
return false;
}
} }
return true;
},
if (!object && !property) { calledWithExactly: function calledWithExactly() {
return spy.create(function () { }); return arguments.length == this.args.length &&
this.calledWith.apply(this, arguments);
},
notCalledWith: function notCalledWith() {
return !this.calledWith.apply(this, arguments);
},
notCalledWithMatch: function notCalledWithMatch() {
return !this.calledWithMatch.apply(this, arguments);
},
returned: function returned(value) {
return sinon.deepEqual(value, this.returnValue);
},
threw: function threw(error) {
if (typeof error === "undefined" || !this.exception) {
return !!this.exception;
} }
var method = object[property]; return this.exception === error || this.exception.name === error;
return sinon.wrapMethod(object, property, spy.create(method)); },
calledWithNew: function calledWithNew(thisValue) {
return this.thisValue instanceof this.proxy;
},
calledBefore: function (other) {
return this.callId < other.callId;
},
calledAfter: function (other) {
return this.callId > other.callId;
},
callArg: function (pos) {
this.args[pos]();
},
callArgOn: function (pos, thisValue) {
this.args[pos].apply(thisValue);
},
callArgWith: function (pos) {
this.callArgOnWith.apply(this, [pos, null].concat(slice.call(arguments, 1)));
},
callArgOnWith: function (pos, thisValue) {
var args = slice.call(arguments, 2);
this.args[pos].apply(thisValue, args);
},
"yield": function () {
this.yieldOn.apply(this, [null].concat(slice.call(arguments, 0)));
},
yieldOn: function (thisValue) {
var args = this.args;
for (var i = 0, l = args.length; i < l; ++i) {
if (typeof args[i] === "function") {
args[i].apply(thisValue, slice.call(arguments, 1));
return;
}
} }
throwYieldError(this.proxy, " cannot yield since no callback was passed.", args);
},
sinon.extend(spy, (function () { yieldTo: function (prop) {
this.yieldToOn.apply(this, [prop, null].concat(slice.call(arguments, 1)));
},
function delegateToCalls(api, method, matchAny, actual, notCalled) { yieldToOn: function (prop, thisValue) {
api[method] = function () { var args = this.args;
if (!this.called) { for (var i = 0, l = args.length; i < l; ++i) {
if (notCalled) { if (args[i] && typeof args[i][prop] === "function") {
return notCalled.apply(this, arguments); args[i][prop].apply(thisValue, slice.call(arguments, 2));
return;
} }
return false;
} }
throwYieldError(this.proxy, " cannot yield to '" + prop +
"' since no callback was passed.", args);
},
var currentCall; toString: function () {
var matches = 0; var callStr = this.proxy.toString() + "(";
var args = [];
for (var i = 0, l = this.callCount; i < l; i += 1) { for (var i = 0, l = this.args.length; i < l; ++i) {
currentCall = this.getCall(i); args.push(sinon.format(this.args[i]));
}
if (currentCall[actual || method].apply(currentCall, arguments)) { callStr = callStr + args.join(", ") + ")";
matches += 1;
if (matchAny) { if (typeof this.returnValue != "undefined") {
return true; callStr += " => " + sinon.format(this.returnValue);
} }
if (this.exception) {
callStr += " !" + this.exception.name;
if (this.exception.message) {
callStr += "(" + this.exception.message + ")";
} }
} }
return matches === this.callCount; return callStr;
}
}; };
callProto.invokeCallback = callProto.yield;
function createSpyCall(spy, thisValue, args, returnValue, exception, id) {
if (typeof id !== "number") {
throw new TypeError("Call id is not a number");
}
var proxyCall = sinon.create(callProto);
proxyCall.proxy = spy;
proxyCall.thisValue = thisValue;
proxyCall.args = args;
proxyCall.returnValue = returnValue;
proxyCall.exception = exception;
proxyCall.callId = id;
return proxyCall;
};
createSpyCall.toString = callProto.toString; // used by mocks
sinon.spyCall = createSpyCall;
}(typeof sinon == "object" && sinon || null));
/**
* @depend ../sinon.js
*/
/*jslint eqeqeq: false, onevar: false, plusplus: false*/
/*global module, require, sinon*/
/**
* Spy functions
*
* @author Christian Johansen (christian@cjohansen.no)
* @license BSD
*
* Copyright (c) 2010-2013 Christian Johansen
*/
(function (sinon) {
var commonJSModule = typeof module == "object" && typeof require == "function";
var push = Array.prototype.push;
var slice = Array.prototype.slice;
var callId = 0;
function spy(object, property) {
if (!property && typeof object == "function") {
return spy.create(object);
}
if (!object && !property) {
return spy.create(function () { });
}
var method = object[property];
return sinon.wrapMethod(object, property, spy.create(method));
} }
function matchingFake(fakes, args, strict) { function matchingFake(fakes, args, strict) {
...@@ -1243,7 +1413,7 @@ var sinon = (function (buster) { ...@@ -1243,7 +1413,7 @@ var sinon = (function (buster) {
return null; return null;
} }
return spyCall.create(this, this.thisValues[i], this.args[i], return sinon.spyCall(this, this.thisValues[i], this.args[i],
this.returnValues[i], this.exceptions[i], this.returnValues[i], this.exceptions[i],
this.callIds[i]); this.callIds[i]);
}, },
...@@ -1333,45 +1503,73 @@ var sinon = (function (buster) { ...@@ -1333,45 +1503,73 @@ var sinon = (function (buster) {
} }
}; };
delegateToCalls(spyApi, "calledOn", true); function delegateToCalls(method, matchAny, actual, notCalled) {
delegateToCalls(spyApi, "alwaysCalledOn", false, "calledOn"); spyApi[method] = function () {
delegateToCalls(spyApi, "calledWith", true); if (!this.called) {
delegateToCalls(spyApi, "calledWithMatch", true); if (notCalled) {
delegateToCalls(spyApi, "alwaysCalledWith", false, "calledWith"); return notCalled.apply(this, arguments);
delegateToCalls(spyApi, "alwaysCalledWithMatch", false, "calledWithMatch"); }
delegateToCalls(spyApi, "calledWithExactly", true); return false;
delegateToCalls(spyApi, "alwaysCalledWithExactly", false, "calledWithExactly"); }
delegateToCalls(spyApi, "neverCalledWith", false, "notCalledWith",
var currentCall;
var matches = 0;
for (var i = 0, l = this.callCount; i < l; i += 1) {
currentCall = this.getCall(i);
if (currentCall[actual || method].apply(currentCall, arguments)) {
matches += 1;
if (matchAny) {
return true;
}
}
}
return matches === this.callCount;
};
}
delegateToCalls("calledOn", true);
delegateToCalls("alwaysCalledOn", false, "calledOn");
delegateToCalls("calledWith", true);
delegateToCalls("calledWithMatch", true);
delegateToCalls("alwaysCalledWith", false, "calledWith");
delegateToCalls("alwaysCalledWithMatch", false, "calledWithMatch");
delegateToCalls("calledWithExactly", true);
delegateToCalls("alwaysCalledWithExactly", false, "calledWithExactly");
delegateToCalls("neverCalledWith", false, "notCalledWith",
function () { return true; }); function () { return true; });
delegateToCalls(spyApi, "neverCalledWithMatch", false, "notCalledWithMatch", delegateToCalls("neverCalledWithMatch", false, "notCalledWithMatch",
function () { return true; }); function () { return true; });
delegateToCalls(spyApi, "threw", true); delegateToCalls("threw", true);
delegateToCalls(spyApi, "alwaysThrew", false, "threw"); delegateToCalls("alwaysThrew", false, "threw");
delegateToCalls(spyApi, "returned", true); delegateToCalls("returned", true);
delegateToCalls(spyApi, "alwaysReturned", false, "returned"); delegateToCalls("alwaysReturned", false, "returned");
delegateToCalls(spyApi, "calledWithNew", true); delegateToCalls("calledWithNew", true);
delegateToCalls(spyApi, "alwaysCalledWithNew", false, "calledWithNew"); delegateToCalls("alwaysCalledWithNew", false, "calledWithNew");
delegateToCalls(spyApi, "callArg", false, "callArgWith", function () { delegateToCalls("callArg", false, "callArgWith", function () {
throw new Error(this.toString() + " cannot call arg since it was not yet invoked."); throw new Error(this.toString() + " cannot call arg since it was not yet invoked.");
}); });
spyApi.callArgWith = spyApi.callArg; spyApi.callArgWith = spyApi.callArg;
delegateToCalls(spyApi, "callArgOn", false, "callArgOnWith", function () { delegateToCalls("callArgOn", false, "callArgOnWith", function () {
throw new Error(this.toString() + " cannot call arg since it was not yet invoked."); throw new Error(this.toString() + " cannot call arg since it was not yet invoked.");
}); });
spyApi.callArgOnWith = spyApi.callArgOn; spyApi.callArgOnWith = spyApi.callArgOn;
delegateToCalls(spyApi, "yield", false, "yield", function () { delegateToCalls("yield", false, "yield", function () {
throw new Error(this.toString() + " cannot yield since it was not yet invoked."); throw new Error(this.toString() + " cannot yield since it was not yet invoked.");
}); });
// "invokeCallback" is an alias for "yield" since "yield" is invalid in strict mode. // "invokeCallback" is an alias for "yield" since "yield" is invalid in strict mode.
spyApi.invokeCallback = spyApi.yield; spyApi.invokeCallback = spyApi.yield;
delegateToCalls(spyApi, "yieldOn", false, "yieldOn", function () { delegateToCalls("yieldOn", false, "yieldOn", function () {
throw new Error(this.toString() + " cannot yield since it was not yet invoked."); throw new Error(this.toString() + " cannot yield since it was not yet invoked.");
}); });
delegateToCalls(spyApi, "yieldTo", false, "yieldTo", function (property) { delegateToCalls("yieldTo", false, "yieldTo", function (property) {
throw new Error(this.toString() + " cannot yield to '" + property + throw new Error(this.toString() + " cannot yield to '" + property +
"' since it was not yet invoked."); "' since it was not yet invoked.");
}); });
delegateToCalls(spyApi, "yieldToOn", false, "yieldToOn", function (property) { delegateToCalls("yieldToOn", false, "yieldToOn", function (property) {
throw new Error(this.toString() + " cannot yield to '" + property + throw new Error(this.toString() + " cannot yield to '" + property +
"' since it was not yet invoked."); "' since it was not yet invoked.");
}); });
...@@ -1420,183 +1618,9 @@ var sinon = (function (buster) { ...@@ -1420,183 +1618,9 @@ var sinon = (function (buster) {
} }
}; };
return spyApi; sinon.extend(spy, spyApi);
}()));
spyCall = (function () {
function throwYieldError(proxy, text, args) {
var msg = sinon.functionName(proxy) + text;
if (args.length) {
msg += " Received [" + slice.call(args).join(", ") + "]";
}
throw new Error(msg);
}
var callApi = {
create: function create(spy, thisValue, args, returnValue, exception, id) {
var proxyCall = sinon.create(spyCall);
delete proxyCall.create;
proxyCall.proxy = spy;
proxyCall.thisValue = thisValue;
proxyCall.args = args;
proxyCall.returnValue = returnValue;
proxyCall.exception = exception;
proxyCall.callId = typeof id == "number" && id || callId++;
return proxyCall; spy.spyCall = sinon.spyCall;
},
calledOn: function calledOn(thisValue) {
if (sinon.match && sinon.match.isMatcher(thisValue)) {
return thisValue.test(this.thisValue);
}
return this.thisValue === thisValue;
},
calledWith: function calledWith() {
for (var i = 0, l = arguments.length; i < l; i += 1) {
if (!sinon.deepEqual(arguments[i], this.args[i])) {
return false;
}
}
return true;
},
calledWithMatch: function calledWithMatch() {
for (var i = 0, l = arguments.length; i < l; i += 1) {
var actual = this.args[i];
var expectation = arguments[i];
if (!sinon.match || !sinon.match(expectation).test(actual)) {
return false;
}
}
return true;
},
calledWithExactly: function calledWithExactly() {
return arguments.length == this.args.length &&
this.calledWith.apply(this, arguments);
},
notCalledWith: function notCalledWith() {
return !this.calledWith.apply(this, arguments);
},
notCalledWithMatch: function notCalledWithMatch() {
return !this.calledWithMatch.apply(this, arguments);
},
returned: function returned(value) {
return sinon.deepEqual(value, this.returnValue);
},
threw: function threw(error) {
if (typeof error == "undefined" || !this.exception) {
return !!this.exception;
}
if (typeof error == "string") {
return this.exception.name == error;
}
return this.exception === error;
},
calledWithNew: function calledWithNew(thisValue) {
return this.thisValue instanceof this.proxy;
},
calledBefore: function (other) {
return this.callId < other.callId;
},
calledAfter: function (other) {
return this.callId > other.callId;
},
callArg: function (pos) {
this.args[pos]();
},
callArgOn: function (pos, thisValue) {
this.args[pos].apply(thisValue);
},
callArgWith: function (pos) {
this.callArgOnWith.apply(this, [pos, null].concat(slice.call(arguments, 1)));
},
callArgOnWith: function (pos, thisValue) {
var args = slice.call(arguments, 2);
this.args[pos].apply(thisValue, args);
},
"yield": function () {
this.yieldOn.apply(this, [null].concat(slice.call(arguments, 0)));
},
yieldOn: function (thisValue) {
var args = this.args;
for (var i = 0, l = args.length; i < l; ++i) {
if (typeof args[i] === "function") {
args[i].apply(thisValue, slice.call(arguments, 1));
return;
}
}
throwYieldError(this.proxy, " cannot yield since no callback was passed.", args);
},
yieldTo: function (prop) {
this.yieldToOn.apply(this, [prop, null].concat(slice.call(arguments, 1)));
},
yieldToOn: function (prop, thisValue) {
var args = this.args;
for (var i = 0, l = args.length; i < l; ++i) {
if (args[i] && typeof args[i][prop] === "function") {
args[i][prop].apply(thisValue, slice.call(arguments, 2));
return;
}
}
throwYieldError(this.proxy, " cannot yield to '" + prop +
"' since no callback was passed.", args);
},
toString: function () {
var callStr = this.proxy.toString() + "(";
var args = [];
for (var i = 0, l = this.args.length; i < l; ++i) {
push.call(args, sinon.format(this.args[i]));
}
callStr = callStr + args.join(", ") + ")";
if (typeof this.returnValue != "undefined") {
callStr += " => " + sinon.format(this.returnValue);
}
if (this.exception) {
callStr += " !" + this.exception.name;
if (this.exception.message) {
callStr += "(" + this.exception.message + ")";
}
}
return callStr;
}
};
callApi.invokeCallback = callApi.yield;
return callApi;
}());
spy.spyCall = spyCall;
// This steps outside the module sandbox and will be removed
sinon.spyCall = spyCall;
if (commonJSModule) { if (commonJSModule) {
module.exports = spy; module.exports = spy;
...@@ -2926,15 +2950,16 @@ if (typeof sinon == "undefined") { ...@@ -2926,15 +2950,16 @@ if (typeof sinon == "undefined") {
(function () { (function () {
var push = [].push; var push = [].push;
sinon.Event = function Event(type, bubbles, cancelable) { sinon.Event = function Event(type, bubbles, cancelable, target) {
this.initEvent(type, bubbles, cancelable); this.initEvent(type, bubbles, cancelable, target);
}; };
sinon.Event.prototype = { sinon.Event.prototype = {
initEvent: function(type, bubbles, cancelable) { initEvent: function(type, bubbles, cancelable, target) {
this.type = type; this.type = type;
this.bubbles = bubbles; this.bubbles = bubbles;
this.cancelable = cancelable; this.cancelable = cancelable;
this.target = target;
}, },
stopPropagation: function () {}, stopPropagation: function () {},
...@@ -3038,6 +3063,23 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest }; ...@@ -3038,6 +3063,23 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
this.status = 0; this.status = 0;
this.statusText = ""; this.statusText = "";
var xhr = this;
var events = ["loadstart", "load", "abort", "loadend"];
function addEventListener(eventName) {
xhr.addEventListener(eventName, function (event) {
var listener = xhr["on" + eventName];
if (listener && typeof listener == "function") {
listener(event);
}
});
}
for (var i = events.length - 1; i >= 0; i--) {
addEventListener(events[i]);
}
if (typeof FakeXMLHttpRequest.onCreate == "function") { if (typeof FakeXMLHttpRequest.onCreate == "function") {
FakeXMLHttpRequest.onCreate(this); FakeXMLHttpRequest.onCreate(this);
} }
...@@ -3191,6 +3233,13 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest }; ...@@ -3191,6 +3233,13 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
} }
this.dispatchEvent(new sinon.Event("readystatechange")); this.dispatchEvent(new sinon.Event("readystatechange"));
switch (this.readyState) {
case FakeXMLHttpRequest.DONE:
this.dispatchEvent(new sinon.Event("load", false, false, this));
this.dispatchEvent(new sinon.Event("loadend", false, false, this));
break;
}
}, },
setRequestHeader: function setRequestHeader(header, value) { setRequestHeader: function setRequestHeader(header, value) {
...@@ -3246,6 +3295,8 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest }; ...@@ -3246,6 +3295,8 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
if (typeof this.onSend == "function") { if (typeof this.onSend == "function") {
this.onSend(this); this.onSend(this);
} }
this.dispatchEvent(new sinon.Event("loadstart", false, false, this));
}, },
abort: function abort() { abort: function abort() {
...@@ -3260,6 +3311,11 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest }; ...@@ -3260,6 +3311,11 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
} }
this.readyState = sinon.FakeXMLHttpRequest.UNSENT; this.readyState = sinon.FakeXMLHttpRequest.UNSENT;
this.dispatchEvent(new sinon.Event("abort", false, false, this));
if (typeof this.onerror === "function") {
this.onerror();
}
}, },
getResponseHeader: function getResponseHeader(header) { getResponseHeader: function getResponseHeader(header) {
...@@ -3340,6 +3396,10 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest }; ...@@ -3340,6 +3396,10 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
this.status = typeof status == "number" ? status : 200; this.status = typeof status == "number" ? status : 200;
this.statusText = FakeXMLHttpRequest.statusCodes[this.status]; this.statusText = FakeXMLHttpRequest.statusCodes[this.status];
this.setResponseBody(body || ""); this.setResponseBody(body || "");
if (typeof this.onload === "function"){
this.onload();
}
} }
}); });
...@@ -4149,7 +4209,14 @@ if (typeof module == "object" && typeof require == "function") { ...@@ -4149,7 +4209,14 @@ if (typeof module == "object" && typeof require == "function") {
if (!sinon.calledInOrder(arguments)) { if (!sinon.calledInOrder(arguments)) {
try { try {
expected = [].join.call(arguments, ", "); expected = [].join.call(arguments, ", ");
actual = sinon.orderByFirstCall(slice.call(arguments)).join(", "); var calls = slice.call(arguments);
var i = calls.length;
while (i) {
if (!calls[--i].called) {
calls.splice(i, 1);
}
}
actual = sinon.orderByFirstCall(calls).join(", ");
} catch (e) { } catch (e) {
// If this fails, we'll just fall back to the blank string // If this fails, we'll just fall back to the blank string
} }
...@@ -4218,6 +4285,6 @@ if (typeof module == "object" && typeof require == "function") { ...@@ -4218,6 +4285,6 @@ if (typeof module == "object" && typeof require == "function") {
} else { } else {
sinon.assert = assert; sinon.assert = assert;
} }
}(typeof sinon == "object" && sinon || null, typeof window != "undefined" ? window : global)); }(typeof sinon == "object" && sinon || null, typeof window != "undefined" ? window : (typeof self != "undefined") ? self : global));
return sinon;}.call(typeof window != 'undefined' && window || {})); return sinon;}.call(typeof window != 'undefined' && window || {}));
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment