Skip to content

Commit

Permalink
chore: Coverage for signal-exit handler. (#1190)
Browse files Browse the repository at this point in the history
This allows us to record coverage for all code called from the
signal-exit handler.
  • Loading branch information
coreyfarrell committed Oct 6, 2019
1 parent 80ad7da commit 22a5ea0
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 14 deletions.
17 changes: 14 additions & 3 deletions index.js
Expand Up @@ -25,9 +25,16 @@ const util = require('util')

const debugLog = util.debuglog('nyc')

let selfCoverageHelper

/* istanbul ignore next */
if (/self-coverage/.test(__dirname)) {
require('../self-coverage-helper')
selfCoverageHelper = require('../self-coverage-helper')
} else {
// Avoid additional conditional code
selfCoverageHelper = {
onExit () {}
}
}

function coverageFinder () {
Expand Down Expand Up @@ -323,11 +330,15 @@ class NYC {
}

_wrapExit () {
selfCoverageHelper.registered = true

// we always want to write coverage
// regardless of how the process exits.
onExit(
/* istanbul ignore next: the callback is run but coverage is not recorded */
() => this.writeCoverageFile(),
() => {
this.writeCoverageFile()
selfCoverageHelper.onExit()
},
{ alwaysLast: true }
)
}
Expand Down
31 changes: 20 additions & 11 deletions self-coverage-helper.js
Expand Up @@ -5,16 +5,25 @@ const fs = require('fs')
const mkdirp = require('make-dir')
const onExit = require('signal-exit')

onExit(function () {
var coverage = global.___NYC_SELF_COVERAGE___
if (typeof ___NYC_SELF_COVERAGE___ === 'object') coverage = ___NYC_SELF_COVERAGE___
if (!coverage) return
module.exports = {
registered: false,
onExit () {
const coverage = ___NYC_SELF_COVERAGE___

var selfCoverageDir = path.join(__dirname, '.self_coverage')
mkdirp.sync(selfCoverageDir)
fs.writeFileSync(
path.join(selfCoverageDir, process.pid + '.json'),
JSON.stringify(coverage),
'utf-8'
)
const selfCoverageDir = path.join(__dirname, '.self_coverage')
mkdirp.sync(selfCoverageDir)
fs.writeFileSync(
path.join(selfCoverageDir, process.pid + '.json'),
JSON.stringify(coverage),
'utf-8'
)
}
}

onExit(() => {
if (module.exports.registered) {
return
}

module.exports.onExit()
})

0 comments on commit 22a5ea0

Please sign in to comment.