Skip to content

Commit 067d38f

Browse files
cjihrigaddaleax
authored andcommitted
test: make test-v8-coverage.js more strict
Update the coverage test to verify that nothing is printed to stderr (which happens when coverage errors happen). Also add a test case to verify that non-absolute coverage paths work. PR-URL: #25289 Fixes: #25287 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Gus Caplan <[email protected]> Reviewed-By: Yuta Hiroto <[email protected]> Reviewed-By: Joyee Cheung <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: James M Snell <[email protected]> Backport-PR-URL: #25496
1 parent 63fbd00 commit 067d38f

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

test/parallel/test-v8-coverage.js

+28
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ function nextdir() {
2323
require.resolve('../fixtures/v8-coverage/basic')
2424
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
2525
assert.strictEqual(output.status, 0);
26+
assert.strictEqual(output.stderr.toString(), '');
2627
const fixtureCoverage = getFixtureCoverage('basic.js', coverageDirectory);
2728
assert.ok(fixtureCoverage);
2829
// first branch executed.
@@ -38,6 +39,7 @@ function nextdir() {
3839
require.resolve('../fixtures/v8-coverage/exit-1')
3940
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
4041
assert.strictEqual(output.status, 1);
42+
assert.strictEqual(output.stderr.toString(), '');
4143
const fixtureCoverage = getFixtureCoverage('exit-1.js', coverageDirectory);
4244
assert.ok(fixtureCoverage, 'coverage not found for file');
4345
// first branch executed.
@@ -55,6 +57,7 @@ function nextdir() {
5557
if (!common.isWindows) {
5658
assert.strictEqual(output.signal, 'SIGINT');
5759
}
60+
assert.strictEqual(output.stderr.toString(), '');
5861
const fixtureCoverage = getFixtureCoverage('sigint.js', coverageDirectory);
5962
assert.ok(fixtureCoverage);
6063
// first branch executed.
@@ -70,6 +73,7 @@ function nextdir() {
7073
require.resolve('../fixtures/v8-coverage/spawn-subprocess')
7174
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
7275
assert.strictEqual(output.status, 0);
76+
assert.strictEqual(output.stderr.toString(), '');
7377
const fixtureCoverage = getFixtureCoverage('subprocess.js',
7478
coverageDirectory);
7579
assert.ok(fixtureCoverage);
@@ -86,6 +90,7 @@ function nextdir() {
8690
require.resolve('../fixtures/v8-coverage/worker')
8791
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
8892
assert.strictEqual(output.status, 0);
93+
assert.strictEqual(output.stderr.toString(), '');
8994
const fixtureCoverage = getFixtureCoverage('subprocess.js',
9095
coverageDirectory);
9196
assert.ok(fixtureCoverage);
@@ -102,6 +107,7 @@ function nextdir() {
102107
require.resolve('../fixtures/v8-coverage/spawn-subprocess-no-cov')
103108
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
104109
assert.strictEqual(output.status, 0);
110+
assert.strictEqual(output.stderr.toString(), '');
105111
const fixtureCoverage = getFixtureCoverage('subprocess.js',
106112
coverageDirectory);
107113
assert.strictEqual(fixtureCoverage, undefined);
@@ -114,13 +120,35 @@ function nextdir() {
114120
require.resolve('../fixtures/v8-coverage/async-hooks')
115121
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
116122
assert.strictEqual(output.status, 0);
123+
assert.strictEqual(output.stderr.toString(), '');
117124
const fixtureCoverage = getFixtureCoverage('async-hooks.js',
118125
coverageDirectory);
119126
assert.ok(fixtureCoverage);
120127
// first branch executed.
121128
assert.strictEqual(fixtureCoverage.functions[1].ranges[0].count, 1);
122129
}
123130

131+
// Outputs coverage when the coverage directory is not absolute.
132+
{
133+
const coverageDirectory = nextdir();
134+
const absoluteCoverageDirectory = path.join(tmpdir.path, coverageDirectory);
135+
const output = spawnSync(process.execPath, [
136+
require.resolve('../fixtures/v8-coverage/basic')
137+
], {
138+
cwd: tmpdir.path,
139+
env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory }
140+
});
141+
assert.strictEqual(output.status, 0);
142+
assert.strictEqual(output.stderr.toString(), '');
143+
const fixtureCoverage = getFixtureCoverage('basic.js',
144+
absoluteCoverageDirectory);
145+
assert.ok(fixtureCoverage);
146+
// first branch executed.
147+
assert.strictEqual(fixtureCoverage.functions[1].ranges[0].count, 1);
148+
// second branch did not execute.
149+
assert.strictEqual(fixtureCoverage.functions[1].ranges[1].count, 0);
150+
}
151+
124152
// Extracts the coverage object for a given fixture name.
125153
function getFixtureCoverage(fixtureFile, coverageDirectory) {
126154
const coverageFiles = fs.readdirSync(coverageDirectory);

0 commit comments

Comments
 (0)