diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index d8b6e7cf..48078af9 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -45,7 +45,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$); @@ -66,7 +66,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$); @@ -355,7 +355,7 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) { }; }; -getJasmineRequireObj().util = function() { +getJasmineRequireObj().util = function(j$) { var util = {}; @@ -412,6 +412,23 @@ 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)/; + + // All falsey values are either primitives, `null`, or `undefined. + if (!argsAsArray[i] || 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; @@ -1629,26 +1646,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)/; - - // All falsey values are either primitives, `null`, or `undefined. - if (!argsAsArray[i] || 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); }; @@ -4326,7 +4326,7 @@ getJasmineRequireObj().QueueRunner = function(j$) { return QueueRunner; }; -getJasmineRequireObj().ReportDispatcher = function() { +getJasmineRequireObj().ReportDispatcher = function(j$) { function ReportDispatcher(methods) { var dispatchedMethods = methods || []; @@ -4364,7 +4364,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)); } } } diff --git a/src/core/CallTracker.js b/src/core/CallTracker.js index e77fa909..f1fdfbc5 100644 --- a/src/core/CallTracker.js +++ b/src/core/CallTracker.js @@ -7,26 +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)/; - - // All falsey values are either primitives, `null`, or `undefined. - if (!argsAsArray[i] || 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); }; diff --git a/src/core/ReportDispatcher.js b/src/core/ReportDispatcher.js index 1ffd4147..4e8b29ea 100644 --- a/src/core/ReportDispatcher.js +++ b/src/core/ReportDispatcher.js @@ -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)); } } } diff --git a/src/core/requireCore.js b/src/core/requireCore.js index c89d3ae1..44e868e3 100644 --- a/src/core/requireCore.js +++ b/src/core/requireCore.js @@ -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$); diff --git a/src/core/util.js b/src/core/util.js index 121e3746..825e8ae6 100644 --- a/src/core/util.js +++ b/src/core/util.js @@ -1,4 +1,4 @@ -getJasmineRequireObj().util = function() { +getJasmineRequireObj().util = function(j$) { var util = {}; @@ -55,6 +55,23 @@ 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)/; + + // All falsey values are either primitives, `null`, or `undefined. + if (!argsAsArray[i] || 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;