diff --git a/packages/vitest/src/reporters/renderers/diff.ts b/packages/vitest/src/reporters/renderers/diff.ts index 19f707d64..fc5fce55c 100644 --- a/packages/vitest/src/reporters/renderers/diff.ts +++ b/packages/vitest/src/reporters/renderers/diff.ts @@ -22,30 +22,25 @@ export async function printError(error: unknown, ctx: Vitest) { const stacks = parseStacktrace(e) - if (!stacks.length) { - ctx.console.error(e) - } - else { - await interpretSourcePos(stacks, ctx) + await interpretSourcePos(stacks, ctx) - const nearest = stacks.find(stack => - ctx.server.moduleGraph.getModuleById(stack.file) + const nearest = stacks.find(stack => + ctx.server.moduleGraph.getModuleById(stack.file) && existsSync(stack.file), - ) + ) - printErrorMessage(e) - await printStack(ctx, stacks, nearest, async(s, pos) => { - if (s === nearest && nearest) { - const sourceCode = await fs.readFile(nearest.file, 'utf-8') - ctx.log(c.yellow(generateCodeFrame(sourceCode, 4, pos))) - } - }) - } + printErrorMessage(e, ctx.console) + await printStack(ctx, stacks, nearest, async(s, pos) => { + if (s === nearest && nearest) { + const sourceCode = await fs.readFile(nearest.file, 'utf-8') + ctx.log(c.yellow(generateCodeFrame(sourceCode, 4, pos))) + } + }) handleImportOutsideModuleError(e.stack || e.stackStr || '', ctx) if (e.showDiff) - displayDiff(e.actual, e.expected) + displayDiff(e.actual, e.expected, ctx.console) } const esmErrors = [ @@ -84,11 +79,11 @@ function handleImportOutsideModuleError(stack: string, ctx: Vitest) { }\n`))) } -function displayDiff(actual: string, expected: string) { +function displayDiff(actual: string, expected: string, console: Console) { console.error(c.gray(unifiedDiff(actual, expected)) + '\n') } -function printErrorMessage(error: ErrorWithDiff) { +function printErrorMessage(error: ErrorWithDiff, console: Console) { const errorName = error.name || error.nameStr || 'Unknown Error' console.error(c.red(`${c.bold(errorName)}: ${error.message}`)) } diff --git a/packages/vitest/src/utils/source-map.ts b/packages/vitest/src/utils/source-map.ts index d76a24086..f27402507 100644 --- a/packages/vitest/src/utils/source-map.ts +++ b/packages/vitest/src/utils/source-map.ts @@ -38,7 +38,9 @@ export async function interpretSourcePos(stackFrames: ParsedStack[], ctx: Vitest } const stackIgnorePatterns = [ + 'node:internal', '/vitest/dist/', + '/node_modules/chai/', '/node_modules/tinypool/', '/node_modules/tinyspy/', ] diff --git a/test/fails/fixtures/vite.config.ts b/test/fails/fixtures/vite.config.ts index 0a3430dac..6d0258279 100644 --- a/test/fails/fixtures/vite.config.ts +++ b/test/fails/fixtures/vite.config.ts @@ -1,5 +1,8 @@ import { defineConfig } from 'vite' export default defineConfig({ - test: {}, + test: { + threads: false, + isolate: false, + }, }) diff --git a/test/single-thread/test/d.test.ts b/test/single-thread/test/d.test.ts index 52a107225..8ebc37fcc 100644 --- a/test/single-thread/test/d.test.ts +++ b/test/single-thread/test/d.test.ts @@ -1,4 +1,8 @@ -import { it } from 'vitest' +import { expect, it } from 'vitest' import { timeout } from './timeout' it('timeout', () => new Promise(resolve => setTimeout(resolve, timeout))) + +it('1', () => { + expect(1).toEqual(1) +})