node/lib/internal/process/write-coverage.js
Evan Lucas 9f61c70385
process: fix coverage generation
e8a26e783e added `process` to the
internal module wrapper. This broke the utility used to write
coverage information due to a SyntaxError that `process` had
already been declared.

PR-URL: https://github.com/nodejs/node/pull/17651
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jon Moss <me@jonathanmoss.me>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
2017-12-14 00:49:55 +01:00

42 lines
874 B
JavaScript

'use strict';
const path = require('path');
const { mkdirSync, writeFileSync } = require('fs');
function writeCoverage() {
if (!global.__coverage__) {
return;
}
const dirname = path.join(path.dirname(process.execPath), '.coverage');
const filename = `coverage-${process.pid}-${Date.now()}.json`;
try {
mkdirSync(dirname);
} catch (err) {
if (err.code !== 'EEXIST') {
console.error(err);
return;
}
}
const target = path.join(dirname, filename);
const coverageInfo = JSON.stringify(global.__coverage__);
try {
writeFileSync(target, coverageInfo);
} catch (err) {
console.error(err);
}
}
function setup() {
const reallyReallyExit = process.reallyExit;
process.reallyExit = function(code) {
writeCoverage();
reallyReallyExit(code);
};
process.on('exit', writeCoverage);
}
exports.setup = setup;