From eb92537a68b7005432d0d245b211a6e5355d6753 Mon Sep 17 00:00:00 2001 From: Martin Schaaf <703355+mschaaf@users.noreply.github.com> Date: Mon, 18 Mar 2019 10:09:30 +0100 Subject: [PATCH 1/3] On error in beforeAll/afterAll relevant information to debug are missing. e.g. on Firefix no stack is available so construct one if filename and lineno are available. --- src/adapter.js | 19 +++++++++++++++---- test/adapter.spec.js | 10 ++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/adapter.js b/src/adapter.js index 9218b59..d20ea05 100644 --- a/src/adapter.js +++ b/src/adapter.js @@ -60,13 +60,24 @@ function getRelevantStackFrom (stack) { * @return {String} Formatted step. */ function formatFailedStep (step) { - // Safari seems to have no stack trace, - // so we just return the error message: - if (!step.stack) { return step.message } - var relevantMessage = [] var relevantStack = [] + // Safari/Firefox seems to have no stack trace, + // so we just return the error message and if available + // construct a stacktrace out of filename and lineno: + if (!step.stack) { + if (step.filename) { + let stack = step.filename; + if (step.lineno) { + stack = stack + ':' + step.lineno; + } + relevantStack.push(stack); + } + relevantMessage.push(step.message); + return relevantMessage.concat(relevantStack).join('\n'); + } + // Remove the message prior to processing the stack to prevent issues like // https://github.com/karma-runner/karma-jasmine/issues/79 var stack = step.stack.replace('Error: ' + step.message, '') diff --git a/test/adapter.spec.js b/test/adapter.spec.js index cc54f44..1d4370e 100644 --- a/test/adapter.spec.js +++ b/test/adapter.spec.js @@ -335,6 +335,16 @@ describe('jasmine adapter', function () { expect(formatFailedStep(step)).toBe('MESSAGE') }) + it('should report message, filename and linenumber if no stack trace but filename and lineno', function () { + var step = { + passed: false, + lineno: 45, + filename: 'source/controller.js', + message: 'MESSAGE' + } + + expect(formatFailedStep(step)).toBe('MESSAGE\nsource/controller.js:45') + }) it('should properly format message containing new-line characters', function () { // FF does not have the message in the stack trace From 3a75697348ff8263c7a1c96eb957d74e3851bc1b Mon Sep 17 00:00:00 2001 From: Martin Schaaf <703355+mschaaf@users.noreply.github.com> Date: Mon, 18 Mar 2019 10:17:05 +0100 Subject: [PATCH 2/3] fix eslint error: Extra semicolon semi --- src/adapter.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/adapter.js b/src/adapter.js index d20ea05..ed5cad8 100644 --- a/src/adapter.js +++ b/src/adapter.js @@ -68,14 +68,14 @@ function formatFailedStep (step) { // construct a stacktrace out of filename and lineno: if (!step.stack) { if (step.filename) { - let stack = step.filename; + let stack = step.filename if (step.lineno) { - stack = stack + ':' + step.lineno; + stack = stack + ':' + step.lineno } - relevantStack.push(stack); + relevantStack.push(stack) } - relevantMessage.push(step.message); - return relevantMessage.concat(relevantStack).join('\n'); + relevantMessage.push(step.message) + return relevantMessage.concat(relevantStack).join('\n') } // Remove the message prior to processing the stack to prevent issues like From 8fdf977b3653fc4db33b6fa92b1751fb503b2a97 Mon Sep 17 00:00:00 2001 From: Martin Schaaf <703355+mschaaf@users.noreply.github.com> Date: Tue, 19 Mar 2019 07:42:37 +0100 Subject: [PATCH 3/3] * apply CR comments: rename stack to stackframe for clarification --- src/adapter.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/adapter.js b/src/adapter.js index ed5cad8..278e7fe 100644 --- a/src/adapter.js +++ b/src/adapter.js @@ -68,11 +68,11 @@ function formatFailedStep (step) { // construct a stacktrace out of filename and lineno: if (!step.stack) { if (step.filename) { - let stack = step.filename + let stackframe = step.filename if (step.lineno) { - stack = stack + ':' + step.lineno + stackframe = stackframe + ':' + step.lineno } - relevantStack.push(stack) + relevantStack.push(stackframe) } relevantMessage.push(step.message) return relevantMessage.concat(relevantStack).join('\n')