File tree 4 files changed +62
-4
lines changed
packages/vitest/src/node/reporters
4 files changed +62
-4
lines changed Original file line number Diff line number Diff line change 1
1
import type { Task } from '@vitest/runner'
2
- import type { ParsedStack } from '@vitest/utils'
2
+ import type { ErrorWithDiff , ParsedStack } from '@vitest/utils'
3
3
import type { Vitest } from '../../node'
4
4
import type { Reporter } from '../../types/reporter'
5
5
import { parseErrorStacktrace } from '../../utils/source-map'
@@ -36,9 +36,10 @@ export class TapReporter implements Reporter {
36
36
return ''
37
37
}
38
38
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 ) ) } ` )
42
43
43
44
if ( stack ) {
44
45
// 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