forked from nwalters512/nyc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
self-coverage-helper.js
37 lines (30 loc) · 857 Bytes
/
self-coverage-helper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'use strict'
const path = require('path')
const fs = require('fs')
const uuid = require('uuid/v4')
const mkdirp = require('make-dir')
const onExit = require('signal-exit')
const nodePreload = require('node-preload')
if (!nodePreload.includes(__filename)) {
nodePreload.unshift(__filename)
}
const nycSelfCoverageHelper = Symbol.for('nyc self-test coverage helper')
global[nycSelfCoverageHelper] = {
registered: false,
onExit () {
const coverage = global.___NYC_SELF_COVERAGE___ || {}
const selfCoverageDir = path.join(__dirname, '.self_coverage')
mkdirp.sync(selfCoverageDir)
fs.writeFileSync(
path.join(selfCoverageDir, uuid() + '.json'),
JSON.stringify(coverage),
'utf-8'
)
}
}
onExit(() => {
if (global[nycSelfCoverageHelper].registered) {
return
}
global[nycSelfCoverageHelper].onExit()
})