From 312fa9506fe9b235af0bae3659086b99a2ff3d5a Mon Sep 17 00:00:00 2001 From: adrienbaron Date: Sun, 25 Dec 2022 15:45:48 +0000 Subject: [PATCH] fix(api): make api parse error stacks and return sourcePos in onTaskUpdate --- packages/vitest/src/api/setup.ts | 7 +++++++ packages/vitest/src/utils/source-map.ts | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/packages/vitest/src/api/setup.ts b/packages/vitest/src/api/setup.ts index d4c6408df886..a385164b6ce2 100644 --- a/packages/vitest/src/api/setup.ts +++ b/packages/vitest/src/api/setup.ts @@ -1,4 +1,5 @@ import { promises as fs } from 'node:fs' + import type { BirpcReturn } from 'birpc' import { createBirpc } from 'birpc' import { parse, stringify } from 'flatted' @@ -8,6 +9,7 @@ import { API_PATH } from '../constants' import type { Vitest } from '../node' import type { File, ModuleGraphData, Reporter, TaskResultPack, UserConsoleLog } from '../types' import { getModuleGraph } from '../utils' +import { parseStacktrace } from '../utils/source-map' import type { TransformResultWithSource, WebSocketEvents, WebSocketHandlers } from './types' export function setup(ctx: Vitest) { @@ -121,6 +123,11 @@ class WebSocketReporter implements Reporter { if (this.clients.size === 0) return + packs.forEach(([, result]) => { + if (result?.error) + result.error.stacks = parseStacktrace(result.error) + }) + this.clients.forEach((client) => { client.onTaskUpdate?.(packs) }) diff --git a/packages/vitest/src/utils/source-map.ts b/packages/vitest/src/utils/source-map.ts index e987e3d44ad1..a200ff6d087b 100644 --- a/packages/vitest/src/utils/source-map.ts +++ b/packages/vitest/src/utils/source-map.ts @@ -83,6 +83,11 @@ export function parseStacktrace(e: ErrorWithDiff, full = false): ParsedStack[] { file, line: parseInt(lineNumber), column: parseInt(columnNumber), + sourcePos: { + source: file, + line: parseInt(lineNumber), + column: parseInt(columnNumber), + }, } }) .filter(notNullish)