From e6a7932ec1b77bd8719ae70b0496212c8821ed05 Mon Sep 17 00:00:00 2001 From: Steve Gravrock Date: Mon, 8 May 2017 11:36:18 -0700 Subject: [PATCH] Report the random seed at the beginning and end of execution This allows reporters to provide the seed to the user even in cases where Jasmine crashes before completing. --- spec/core/integration/EnvSpec.js | 40 ++++++++++++++++++++++++++++---- src/core/Env.js | 3 ++- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/spec/core/integration/EnvSpec.js b/spec/core/integration/EnvSpec.js index e5543195..58ae5ab5 100644 --- a/spec/core/integration/EnvSpec.js +++ b/spec/core/integration/EnvSpec.js @@ -1260,7 +1260,8 @@ describe("Env integration", function() { reporter.jasmineDone.and.callFake(function() { expect(reporter.jasmineStarted).toHaveBeenCalledWith({ - totalSpecsDefined: 1 + totalSpecsDefined: 1, + order: jasmine.any(jasmineUnderTest.Order) }); expect(reporter.specDone).toHaveBeenCalledWith(jasmine.objectContaining({ @@ -1295,7 +1296,8 @@ describe("Env integration", function() { reporter.jasmineDone.and.callFake(function() { expect(reporter.jasmineStarted).toHaveBeenCalledWith({ - totalSpecsDefined: 1 + totalSpecsDefined: 1, + order: jasmine.any(jasmineUnderTest.Order) }); expect(reporter.specDone).toHaveBeenCalledWith(jasmine.objectContaining({ @@ -1333,7 +1335,8 @@ describe("Env integration", function() { reporter.jasmineDone.and.callFake(function() { expect(reporter.jasmineStarted).toHaveBeenCalledWith({ - totalSpecsDefined: 5 + totalSpecsDefined: 5, + order: jasmine.any(jasmineUnderTest.Order) }); expect(reporter.specDone.calls.count()).toBe(5); @@ -1390,6 +1393,34 @@ describe("Env integration", function() { env.execute(); }); + it("should report the random seed at the beginning and end of execution", function(done) { + var env = new jasmineUnderTest.Env(), + reporter = jasmine.createSpyObj('fakeReporter', [ + "jasmineStarted", + "jasmineDone", + "suiteStarted", + "suiteDone", + "specStarted", + "specDone" + ]); + env.randomizeTests(true); + env.seed('123456'); + + reporter.jasmineDone.and.callFake(function(doneArg) { + expect(reporter.jasmineStarted).toHaveBeenCalled(); + var startedArg = reporter.jasmineStarted.calls.argsFor(0)[0]; + expect(startedArg.order.random).toEqual(true); + expect(startedArg.order.seed).toEqual('123456'); + + expect(doneArg.order.random).toEqual(true); + expect(doneArg.order.seed).toEqual('123456'); + done(); + }); + + env.addReporter(reporter); + env.execute(); + }); + it('should report pending spec messages', function(done) { var env = new jasmineUnderTest.Env(), reporter = jasmine.createSpyObj('fakeReporter', [ @@ -1449,7 +1480,8 @@ describe("Env integration", function() { reporter.jasmineDone.and.callFake(function() { expect(reporter.jasmineStarted).toHaveBeenCalledWith({ - totalSpecsDefined: 1 + totalSpecsDefined: 1, + order: jasmine.any(jasmineUnderTest.Order) }); expect(reporter.specDone).toHaveBeenCalledWith(jasmine.objectContaining({ status: 'disabled' })); diff --git a/src/core/Env.js b/src/core/Env.js index f5877d92..5f657c61 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -254,7 +254,8 @@ getJasmineRequireObj().Env = function(j$) { } reporter.jasmineStarted({ - totalSpecsDefined: totalSpecsDefined + totalSpecsDefined: totalSpecsDefined, + order: order }); currentlyExecutingSuites.push(topSuite);