Skip to content

Commit

Permalink
Include test invocation in stack trace
Browse files Browse the repository at this point in the history
  • Loading branch information
MatthiasKunnen committed Mar 23, 2021
1 parent 2488b95 commit d735c23
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
5 changes: 4 additions & 1 deletion lib/runner.js
Expand Up @@ -4,6 +4,7 @@ const matcher = require('matcher');
const ContextRef = require('./context-ref');
const createChain = require('./create-chain');
const parseTestArgs = require('./parse-test-args');
const {stackUtils} = require('./reporters/beautify-stack');
const snapshotManager = require('./snapshot-manager');
const serializeError = require('./serialize-error');
const Runnable = require('./test');
Expand Down Expand Up @@ -88,6 +89,8 @@ class Runner extends Emittery {
}

metadata.taskIndex = this.nextTaskIndex++;
const testInvocation = stackUtils.parseLine(stackUtils.captureString().split('\n')[0]);
metadata.testLine = ` at test (${testInvocation.file}:${testInvocation.line}:${testInvocation.column})`;

const {args, buildTitle, implementations, rawTitle} = parseTestArgs(testArgs);

Expand Down Expand Up @@ -366,7 +369,7 @@ class Runner extends Emittery {
this.emit('stateChange', {
type: 'test-failed',
title: result.title,
err: serializeError('Test failure', true, result.error, this.file),
err: serializeError('Test failure', true, result.error, this.file, task.metadata.testLine),
duration: result.duration,
knownFailing: result.metadata.failing,
logs: result.logs
Expand Down
8 changes: 5 additions & 3 deletions lib/serialize-error.js
Expand Up @@ -67,7 +67,7 @@ function buildSource(source) {
};
}

function trySerializeError(error, shouldBeautifyStack, testFile) {
function trySerializeError(error, shouldBeautifyStack, testFile, testLine) {
const stack = error.savedError ? error.savedError.stack : error.stack;

const retval = {
Expand All @@ -82,6 +82,8 @@ function trySerializeError(error, shouldBeautifyStack, testFile) {
retval.stack = error.actualStack;
}

retval.stack += `\n${testLine}`;

if (retval.avaAssertionError) {
retval.improperUsage = error.improperUsage;
retval.message = error.message;
Expand Down Expand Up @@ -143,7 +145,7 @@ function trySerializeError(error, shouldBeautifyStack, testFile) {
return retval;
}

function serializeError(origin, shouldBeautifyStack, error, testFile) {
function serializeError(origin, shouldBeautifyStack, error, testFile, testLine) {
if (!isError(error)) {
return {
avaAssertionError: false,
Expand All @@ -153,7 +155,7 @@ function serializeError(origin, shouldBeautifyStack, error, testFile) {
}

try {
return trySerializeError(error, shouldBeautifyStack, testFile);
return trySerializeError(error, shouldBeautifyStack, testFile, testLine);
} catch {
const replacement = new Error(`${origin}: Could not serialize error`);
return {
Expand Down

0 comments on commit d735c23

Please sign in to comment.