1+ import { describe , test , expect } from 'vitest' ;
2+ import { spawnSync } from 'node:child_process' ;
3+ import { join } from 'node:path' ;
4+
5+ const __dirname = import . meta. dirname || new URL ( '.' , import . meta. url ) . pathname ;
6+
7+ describe ( "Basic" , ( ) => {
8+ const testFile = join ( __dirname , 'test.js' ) ;
9+ test ( "Should capture stack trace from multiple threads" , ( ) => {
10+ const result = spawnSync ( 'node' , [ testFile ] )
11+ expect ( result . status ) . toBe ( 0 ) ;
12+
13+ const stacks = JSON . parse ( result . stdout . toString ( ) ) ;
14+
15+ expect ( stacks . main ) . toEqual ( expect . arrayContaining ( [
16+ {
17+ function : 'pbkdf2Sync' ,
18+ filename : expect . any ( String ) ,
19+ lineno : expect . any ( Number ) ,
20+ colno : expect . any ( Number ) ,
21+ } ,
22+ {
23+ function : 'longWork' ,
24+ filename : expect . stringMatching ( / t e s t .j s $ / ) ,
25+ lineno : 18 ,
26+ colno : 29
27+ } ,
28+ {
29+ function : '?' ,
30+ filename : expect . stringMatching ( / t e s t .j s $ / ) ,
31+ lineno : 22 ,
32+ colno : 1
33+ } ,
34+ ] ) ) ;
35+
36+ expect ( stacks [ 'worker-2' ] ) . toEqual ( expect . arrayContaining ( [
37+ {
38+ function : 'pbkdf2Sync' ,
39+ filename : expect . any ( String ) ,
40+ lineno : expect . any ( Number ) ,
41+ colno : expect . any ( Number ) ,
42+ } ,
43+ {
44+ function : 'longWork' ,
45+ filename : expect . stringMatching ( / w o r k e r .j s $ / ) ,
46+ lineno : 10 ,
47+ colno : 29
48+ } ,
49+ {
50+ function : '?' ,
51+ filename : expect . stringMatching ( / w o r k e r .j s $ / ) ,
52+ lineno : 14 ,
53+ colno : 1
54+ } ,
55+ ] ) ) ;
56+ } ) ;
57+ } ) ;
0 commit comments