Skip to content

Commit 27b5dbb

Browse files
cjihrigrefack
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: nodejs#25289 Fixes: nodejs#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]>
1 parent 4cfbcb0 commit 27b5dbb

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);
@@ -87,6 +91,7 @@ function nextdir() {
8791
require.resolve('../fixtures/v8-coverage/worker')
8892
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
8993
assert.strictEqual(output.status, 0);
94+
assert.strictEqual(output.stderr.toString(), '');
9095
const fixtureCoverage = getFixtureCoverage('subprocess.js',
9196
coverageDirectory);
9297
assert.ok(fixtureCoverage);
@@ -103,6 +108,7 @@ function nextdir() {
103108
require.resolve('../fixtures/v8-coverage/spawn-subprocess-no-cov')
104109
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
105110
assert.strictEqual(output.status, 0);
111+
assert.strictEqual(output.stderr.toString(), '');
106112
const fixtureCoverage = getFixtureCoverage('subprocess.js',
107113
coverageDirectory);
108114
assert.strictEqual(fixtureCoverage, undefined);
@@ -115,13 +121,35 @@ function nextdir() {
115121
require.resolve('../fixtures/v8-coverage/async-hooks')
116122
], { env: { ...process.env, NODE_V8_COVERAGE: coverageDirectory } });
117123
assert.strictEqual(output.status, 0);
124+
assert.strictEqual(output.stderr.toString(), '');
118125
const fixtureCoverage = getFixtureCoverage('async-hooks.js',
119126
coverageDirectory);
120127
assert.ok(fixtureCoverage);
121128
// first branch executed.
122129
assert.strictEqual(fixtureCoverage.functions[1].ranges[0].count, 1);
123130
}
124131

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

0 commit comments

Comments
 (0)