File tree Expand file tree Collapse file tree 4 files changed +62
-4
lines changed
packages/vitest/src/node/reporters Expand file tree Collapse file tree 4 files changed +62
-4
lines changed Original file line number Diff line number Diff line change 11import type { Task } from '@vitest/runner'
2- import type { ParsedStack } from '@vitest/utils'
2+ import type { ErrorWithDiff , ParsedStack } from '@vitest/utils'
33import type { Vitest } from '../../node'
44import type { Reporter } from '../../types/reporter'
55import { parseErrorStacktrace } from '../../utils/source-map'
@@ -36,9 +36,10 @@ export class TapReporter implements Reporter {
3636 return ''
3737 }
3838
39- private logErrorDetails ( error : Error , stack ?: ParsedStack ) {
40- this . logger . log ( `name: ${ yamlString ( error . name ) } ` )
41- this . logger . log ( `message: ${ yamlString ( error . message ) } ` )
39+ private logErrorDetails ( error : ErrorWithDiff , stack ?: ParsedStack ) {
40+ const errorName = error . name || error . nameStr || 'Unknown Error'
41+ this . logger . log ( `name: ${ yamlString ( String ( errorName ) ) } ` )
42+ this . logger . log ( `message: ${ yamlString ( String ( error . message ) ) } ` )
4243
4344 if ( stack ) {
4445 // For compatibility with tap-mocha-reporter
Original file line number Diff line number Diff line change 1+ import { test } from 'vitest' ;
2+
3+ test ( 'no name object' , ( ) => {
4+ throw { noName : 'hi' } ;
5+ } ) ;
6+
7+ test ( 'string' , ( ) => {
8+ throw "hi" ;
9+ } ) ;
10+
11+ test ( 'number' , ( ) => {
12+ throw 1234 ;
13+ } ) ;
14+
15+ test ( 'number name object' , ( ) => {
16+ throw { name : 1234 } ;
17+ } ) ;
Original file line number Diff line number Diff line change 1+ import { defineConfig } from 'vitest/config'
2+
3+ export default defineConfig ( { } )
Original file line number Diff line number Diff line change 1+ import { expect , test } from 'vitest'
2+ import { runVitest } from '../../test-utils'
3+
4+ test ( 'handle custom error without name' , async ( ) => {
5+ let { stdout, stderr } = await runVitest ( { reporters : 'tap-flat' , root : './fixtures/custom-error' } )
6+ stdout = stdout . replaceAll ( / t i m e = ( \S * ) / g, 'time=[...]' ) // strip non-deterministic output
7+ expect ( stdout ) . toMatchInlineSnapshot ( `
8+ "TAP version 13
9+ 1..4
10+ not ok 1 - basic.test.ts > no name object # time=[...]
11+ ---
12+ error:
13+ name: "Unknown Error"
14+ message: "undefined"
15+ ...
16+ not ok 2 - basic.test.ts > string # time=[...]
17+ ---
18+ error:
19+ name: "Unknown Error"
20+ message: "hi"
21+ ...
22+ not ok 3 - basic.test.ts > number # time=[...]
23+ ---
24+ error:
25+ name: "Unknown Error"
26+ message: "1234"
27+ ...
28+ not ok 4 - basic.test.ts > number name object # time=[...]
29+ ---
30+ error:
31+ name: "1234"
32+ message: "undefined"
33+ ...
34+ "
35+ ` )
36+ expect ( stderr ) . toBe ( '' )
37+ } )
You can’t perform that action at this time.
0 commit comments