File tree 3 files changed +26
-4
lines changed
3 files changed +26
-4
lines changed Original file line number Diff line number Diff line change 1
1
'use strict' ;
2
2
const path = require ( 'path' ) ;
3
3
const { mkdirSync, writeFileSync } = require ( 'fs' ) ;
4
- // TODO(addaleax): add support for coverage to worker threads.
5
- const hasInspector = process . config . variables . v8_enable_inspector === 1 &&
6
- require ( 'internal/worker' ) . isMainThread ;
4
+ const hasInspector = process . config . variables . v8_enable_inspector === 1 ;
7
5
let inspector = null ;
8
6
if ( hasInspector ) inspector = require ( 'inspector' ) ;
9
7
@@ -14,7 +12,9 @@ function writeCoverage() {
14
12
return ;
15
13
}
16
14
17
- const filename = `coverage-${ process . pid } -${ Date . now ( ) } .json` ;
15
+ const { threadId } = require ( 'internal/worker' ) ;
16
+
17
+ const filename = `coverage-${ process . pid } -${ Date . now ( ) } -${ threadId } .json` ;
18
18
try {
19
19
// TODO(bcoe): switch to mkdirp once #22302 is addressed.
20
20
mkdirSync ( process . env . NODE_V8_COVERAGE ) ;
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+ const { Worker } = require ( 'worker_threads' ) ;
3
+ const path = require ( 'path' ) ;
4
+
5
+ new Worker ( path . resolve ( __dirname , 'subprocess.js' ) ) ;
Original file line number Diff line number Diff line change @@ -79,6 +79,23 @@ function nextdir() {
79
79
assert . strictEqual ( fixtureCoverage . functions [ 2 ] . ranges [ 1 ] . count , 0 ) ;
80
80
}
81
81
82
+ // outputs coverage from worker.
83
+ {
84
+ const coverageDirectory = path . join ( tmpdir . path , nextdir ( ) ) ;
85
+ const output = spawnSync ( process . execPath , [
86
+ '--experimental-worker' ,
87
+ require . resolve ( '../fixtures/v8-coverage/worker' )
88
+ ] , { env : { ...process . env , NODE_V8_COVERAGE : coverageDirectory } } ) ;
89
+ assert . strictEqual ( output . status , 0 ) ;
90
+ const fixtureCoverage = getFixtureCoverage ( 'subprocess.js' ,
91
+ coverageDirectory ) ;
92
+ assert . ok ( fixtureCoverage ) ;
93
+ // first branch executed.
94
+ assert . strictEqual ( fixtureCoverage . functions [ 2 ] . ranges [ 0 ] . count , 1 ) ;
95
+ // second branch did not execute.
96
+ assert . strictEqual ( fixtureCoverage . functions [ 2 ] . ranges [ 1 ] . count , 0 ) ;
97
+ }
98
+
82
99
// does not output coverage if NODE_V8_COVERAGE is empty.
83
100
{
84
101
const coverageDirectory = path . join ( tmpdir . path , nextdir ( ) ) ;
You can’t perform that action at this time.
0 commit comments