From 3713801164df1bb3353d44601b89df50cf2908be Mon Sep 17 00:00:00 2001 From: Nico Jansen Date: Fri, 9 Mar 2018 18:42:19 +0100 Subject: [PATCH 1/2] fix(time): report correct time since Jasmine v2.9.0 Time reporting broke since jasmine-core v2.9 because the reporter API now receives copies of spec results instead of the real deal. We cannot rely on the same object being passed around. --- src/adapter.js | 5 +++-- test/adapter.spec.js | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/adapter.js b/src/adapter.js index 41b7e94..897386e 100644 --- a/src/adapter.js +++ b/src/adapter.js @@ -161,6 +161,7 @@ function KarmaReporter (tc, jasmineEnv) { // Save link on native Date object // because user can mock it var _Date = Date + var startTimeCurrentSpec = new _Date().getTime(); /** * @param suite @@ -234,7 +235,7 @@ function KarmaReporter (tc, jasmineEnv) { } this.specStarted = function (specResult) { - specResult.startTime = new _Date().getTime() + startTimeCurrentSpec = new _Date().getTime() } this.specDone = function (specResult) { @@ -249,7 +250,7 @@ function KarmaReporter (tc, jasmineEnv) { pending: specResult.status === 'pending', success: specResult.failedExpectations.length === 0, suite: [], - time: skipped ? 0 : new _Date().getTime() - specResult.startTime, + time: skipped ? 0 : new _Date().getTime() - startTimeCurrentSpec, executedExpectationsCount: specResult.failedExpectations.length + specResult.passedExpectations.length } diff --git a/test/adapter.spec.js b/test/adapter.spec.js index c8483e9..0be36fc 100644 --- a/test/adapter.spec.js +++ b/test/adapter.spec.js @@ -253,6 +253,14 @@ describe('jasmine adapter', function () { it('should report time for every spec', function () { var counter = 3 + function copySpecResult() { + var copy = {} + for(var i in spec.result) { + copy[i] = spec.result[i] + } + return copy + } + spyOn(Date.prototype, 'getTime').and.callFake(function () { counter += 1 return counter @@ -262,8 +270,8 @@ describe('jasmine adapter', function () { expect(result.time).toBe(1) // 4 - 3 }) - reporter.specStarted(spec.result) - reporter.specDone(spec.result) + reporter.specStarted(copySpecResult()) + reporter.specDone(copySpecResult()) expect(karma.result).toHaveBeenCalled() }) From a0b3ec8265a0f5e033aacfb97c8ae83f12d84260 Mon Sep 17 00:00:00 2001 From: Nico Jansen Date: Sun, 18 Mar 2018 14:11:48 +0100 Subject: [PATCH 2/2] refactor(adapter): fix static code analysis warnings --- src/adapter.js | 4 ++-- test/adapter.spec.js | 12 ++---------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/adapter.js b/src/adapter.js index 897386e..61280ba 100644 --- a/src/adapter.js +++ b/src/adapter.js @@ -161,7 +161,7 @@ function KarmaReporter (tc, jasmineEnv) { // Save link on native Date object // because user can mock it var _Date = Date - var startTimeCurrentSpec = new _Date().getTime(); + var startTimeCurrentSpec = new _Date().getTime() /** * @param suite @@ -234,7 +234,7 @@ function KarmaReporter (tc, jasmineEnv) { currentSuite = currentSuite.parent } - this.specStarted = function (specResult) { + this.specStarted = function () { startTimeCurrentSpec = new _Date().getTime() } diff --git a/test/adapter.spec.js b/test/adapter.spec.js index 0be36fc..1920a91 100644 --- a/test/adapter.spec.js +++ b/test/adapter.spec.js @@ -253,14 +253,6 @@ describe('jasmine adapter', function () { it('should report time for every spec', function () { var counter = 3 - function copySpecResult() { - var copy = {} - for(var i in spec.result) { - copy[i] = spec.result[i] - } - return copy - } - spyOn(Date.prototype, 'getTime').and.callFake(function () { counter += 1 return counter @@ -270,8 +262,8 @@ describe('jasmine adapter', function () { expect(result.time).toBe(1) // 4 - 3 }) - reporter.specStarted(copySpecResult()) - reporter.specDone(copySpecResult()) + reporter.specStarted(Object.assign({}, spec.result)) + reporter.specDone(Object.assign({}, spec.result)) expect(karma.result).toHaveBeenCalled() })