Deep clone args before passing them to reporters
This commit is contained in:
@@ -7,25 +7,9 @@ getJasmineRequireObj().CallTracker = function(j$) {
|
||||
var calls = [];
|
||||
var opts = {};
|
||||
|
||||
function argCloner(context) {
|
||||
var clonedArgs = [];
|
||||
var argsAsArray = j$.util.argsToArray(context.args);
|
||||
for(var i = 0; i < argsAsArray.length; i++) {
|
||||
var str = Object.prototype.toString.apply(argsAsArray[i]),
|
||||
primitives = /^\[object (Boolean|String|RegExp|Number)/;
|
||||
|
||||
if (argsAsArray[i] == null || str.match(primitives)) {
|
||||
clonedArgs.push(argsAsArray[i]);
|
||||
} else {
|
||||
clonedArgs.push(j$.util.clone(argsAsArray[i]));
|
||||
}
|
||||
}
|
||||
context.args = clonedArgs;
|
||||
}
|
||||
|
||||
this.track = function(context) {
|
||||
if(opts.cloneArgs) {
|
||||
argCloner(context);
|
||||
context.args = j$.util.cloneArgs(context.args);
|
||||
}
|
||||
calls.push(context);
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
getJasmineRequireObj().ReportDispatcher = function() {
|
||||
getJasmineRequireObj().ReportDispatcher = function(j$) {
|
||||
function ReportDispatcher(methods) {
|
||||
|
||||
var dispatchedMethods = methods || [];
|
||||
@@ -36,7 +36,7 @@ getJasmineRequireObj().ReportDispatcher = function() {
|
||||
for (var i = 0; i < reporters.length; i++) {
|
||||
var reporter = reporters[i];
|
||||
if (reporter[method]) {
|
||||
reporter[method].apply(reporter, args);
|
||||
reporter[method].apply(reporter, j$.util.cloneArgs(args));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ var getJasmineRequireObj = (function (jasmineGlobal) {
|
||||
var j$ = {};
|
||||
|
||||
jRequire.base(j$, jasmineGlobal);
|
||||
j$.util = jRequire.util();
|
||||
j$.util = jRequire.util(j$);
|
||||
j$.errors = jRequire.errors();
|
||||
j$.formatErrorMsg = jRequire.formatErrorMsg();
|
||||
j$.Any = jRequire.Any(j$);
|
||||
@@ -44,7 +44,7 @@ var getJasmineRequireObj = (function (jasmineGlobal) {
|
||||
j$.ArrayWithExactContents = jRequire.ArrayWithExactContents(j$);
|
||||
j$.pp = jRequire.pp(j$);
|
||||
j$.QueueRunner = jRequire.QueueRunner(j$);
|
||||
j$.ReportDispatcher = jRequire.ReportDispatcher();
|
||||
j$.ReportDispatcher = jRequire.ReportDispatcher(j$);
|
||||
j$.Spec = jRequire.Spec(j$);
|
||||
j$.Spy = jRequire.Spy(j$);
|
||||
j$.SpyRegistry = jRequire.SpyRegistry(j$);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
getJasmineRequireObj().util = function() {
|
||||
getJasmineRequireObj().util = function(j$) {
|
||||
|
||||
var util = {};
|
||||
|
||||
@@ -55,6 +55,22 @@ getJasmineRequireObj().util = function() {
|
||||
return cloned;
|
||||
};
|
||||
|
||||
util.cloneArgs = function(args) {
|
||||
var clonedArgs = [];
|
||||
var argsAsArray = j$.util.argsToArray(args);
|
||||
for(var i = 0; i < argsAsArray.length; i++) {
|
||||
var str = Object.prototype.toString.apply(argsAsArray[i]),
|
||||
primitives = /^\[object (Boolean|String|RegExp|Number)/;
|
||||
|
||||
if (argsAsArray[i] == null || str.match(primitives)) {
|
||||
clonedArgs.push(argsAsArray[i]);
|
||||
} else {
|
||||
clonedArgs.push(j$.util.clone(argsAsArray[i]));
|
||||
}
|
||||
}
|
||||
return clonedArgs;
|
||||
};
|
||||
|
||||
util.getPropertyDescriptor = function(obj, methodName) {
|
||||
var descriptor,
|
||||
proto = obj;
|
||||
|
||||
Reference in New Issue
Block a user