diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index ac72688e..3d254bae 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -9564,13 +9564,7 @@ getJasmineRequireObj().Runner = function(j$) { // In parallel mode, the jasmineStarted event is separately dispatched // by jasmine-npm. This event only reaches reporters in non-parallel. totalSpecsDefined, - /** - * Information about the ordering (random or not) of this execution of the suite. - * @typedef Order - * @property {boolean} random - Whether the suite is running in random order - * @property {string} seed - The random seed - */ - order: order, + order: orderForReporting(order), parallel: false }); @@ -9622,7 +9616,7 @@ getJasmineRequireObj().Runner = function(j$) { totalTime: jasmineTimer.elapsed(), incompleteReason: incompleteReason, incompleteCode: incompleteCode, - order: order, + order: orderForReporting(order), failedExpectations: this.#topSuite.result.failedExpectations, deprecationWarnings: this.#topSuite.result.deprecationWarnings }; @@ -9632,6 +9626,22 @@ getJasmineRequireObj().Runner = function(j$) { } } + /** + * Information about the ordering (random or not) of this execution of the suite. + * @typedef Order + * @property {boolean} random - Whether the suite is running in random order + * @property {string} seed - The random seed + */ + function orderForReporting(order) { + // Don't expose the actual Order object to reporters. That class is private + // and instances are not cloneable. + if (order.random) { + return { random: true, seed: order.seed }; + } else { + return { random: false }; + } + } + return Runner; }; diff --git a/spec/core/DelayedFunctionSchedulerSpec.js b/spec/core/DelayedFunctionSchedulerSpec.js index c7ea4a7c..20674c3d 100644 --- a/spec/core/DelayedFunctionSchedulerSpec.js +++ b/spec/core/DelayedFunctionSchedulerSpec.js @@ -1,6 +1,6 @@ describe('DelayedFunctionScheduler', function() { 'use strict'; - + it('schedules a function for later execution', function() { const scheduler = new jasmineUnderTest.DelayedFunctionScheduler(), fn = jasmine.createSpy('fn'); diff --git a/spec/core/integration/EnvSpec.js b/spec/core/integration/EnvSpec.js index f1b8504d..df431c65 100644 --- a/spec/core/integration/EnvSpec.js +++ b/spec/core/integration/EnvSpec.js @@ -1571,7 +1571,7 @@ describe('Env integration', function() { expect(reporter.jasmineStarted).toHaveBeenCalledWith({ totalSpecsDefined: 1, - order: jasmine.any(jasmineUnderTest.Order), + order: { random: true, seed: jasmine.any(String) }, parallel: false }); @@ -1606,7 +1606,7 @@ describe('Env integration', function() { expect(reporter.jasmineStarted).toHaveBeenCalledWith({ totalSpecsDefined: 1, - order: jasmine.any(jasmineUnderTest.Order), + order: { random: true, seed: jasmine.any(String) }, parallel: false }); @@ -1671,7 +1671,7 @@ describe('Env integration', function() { expect(reporter.jasmineStarted).toHaveBeenCalledWith({ totalSpecsDefined: 6, - order: jasmine.any(jasmineUnderTest.Order), + order: { random: false }, parallel: false }); @@ -1953,12 +1953,10 @@ describe('Env integration', function() { expect(reporter.jasmineStarted).toHaveBeenCalled(); const startedArg = reporter.jasmineStarted.calls.argsFor(0)[0]; - expect(startedArg.order.random).toEqual(true); - expect(startedArg.order.seed).toEqual('123456'); + expect(startedArg.order).toEqual({ random: true, seed: '123456' }); const doneArg = reporter.jasmineDone.calls.argsFor(0)[0]; - expect(doneArg.order.random).toEqual(true); - expect(doneArg.order.seed).toEqual('123456'); + expect(doneArg.order).toEqual({ random: true, seed: '123456' }); }); it('coerces the random seed to a string if it is a number', async function() { @@ -2078,7 +2076,7 @@ describe('Env integration', function() { expect(reporter.jasmineStarted).toHaveBeenCalledWith({ totalSpecsDefined: 1, - order: jasmine.any(jasmineUnderTest.Order), + order: { random: true, seed: jasmine.any(String) }, parallel: false }); diff --git a/src/core/Runner.js b/src/core/Runner.js index c6d69a7a..0a715a55 100644 --- a/src/core/Runner.js +++ b/src/core/Runner.js @@ -106,13 +106,7 @@ getJasmineRequireObj().Runner = function(j$) { // In parallel mode, the jasmineStarted event is separately dispatched // by jasmine-npm. This event only reaches reporters in non-parallel. totalSpecsDefined, - /** - * Information about the ordering (random or not) of this execution of the suite. - * @typedef Order - * @property {boolean} random - Whether the suite is running in random order - * @property {string} seed - The random seed - */ - order: order, + order: orderForReporting(order), parallel: false }); @@ -164,7 +158,7 @@ getJasmineRequireObj().Runner = function(j$) { totalTime: jasmineTimer.elapsed(), incompleteReason: incompleteReason, incompleteCode: incompleteCode, - order: order, + order: orderForReporting(order), failedExpectations: this.#topSuite.result.failedExpectations, deprecationWarnings: this.#topSuite.result.deprecationWarnings }; @@ -174,5 +168,21 @@ getJasmineRequireObj().Runner = function(j$) { } } + /** + * Information about the ordering (random or not) of this execution of the suite. + * @typedef Order + * @property {boolean} random - Whether the suite is running in random order + * @property {string} seed - The random seed + */ + function orderForReporting(order) { + // Don't expose the actual Order object to reporters. That class is private + // and instances are not cloneable. + if (order.random) { + return { random: true, seed: order.seed }; + } else { + return { random: false }; + } + } + return Runner; };