From b9200c33aec67712a812bb0f7648d7e6ea8b0956 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Mon, 14 Oct 2024 09:19:17 -0400 Subject: [PATCH] test_runner: require `--enable-source-maps` for sourcemap coverage PR-URL: https://github.com/nodejs/node/pull/55359 Reviewed-By: Colin Ihrig Reviewed-By: Matteo Collina Reviewed-By: Moshe Atlow --- lib/internal/test_runner/coverage.js | 12 ++++++++-- .../test-runner-coverage-source-map.js | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/internal/test_runner/coverage.js b/lib/internal/test_runner/coverage.js index 17e02de6577a5c..3b68f79ddcf023 100644 --- a/lib/internal/test_runner/coverage.js +++ b/lib/internal/test_runner/coverage.js @@ -57,12 +57,19 @@ class CoverageLine { } class TestCoverage { - constructor(coverageDirectory, originalCoverageDirectory, workingDirectory, excludeGlobs, includeGlobs, thresholds) { + constructor(coverageDirectory, + originalCoverageDirectory, + workingDirectory, + excludeGlobs, + includeGlobs, + sourceMaps, + thresholds) { this.coverageDirectory = coverageDirectory; this.originalCoverageDirectory = originalCoverageDirectory; this.workingDirectory = workingDirectory; this.excludeGlobs = excludeGlobs; this.includeGlobs = includeGlobs; + this.sourceMaps = sourceMaps; this.thresholds = thresholds; } @@ -341,7 +348,7 @@ class TestCoverage { mapCoverageWithSourceMap(coverage) { const { result } = coverage; const sourceMapCache = coverage['source-map-cache']; - if (!sourceMapCache) { + if (!this.sourceMaps || !sourceMapCache) { return result; } const newResult = new SafeMap(); @@ -517,6 +524,7 @@ function setupCoverage(options) { cwd, options.coverageExcludeGlobs, options.coverageIncludeGlobs, + options.sourceMaps, { __proto__: null, line: options.lineCoverage, diff --git a/test/parallel/test-runner-coverage-source-map.js b/test/parallel/test-runner-coverage-source-map.js index 0ded33713c784a..48807fb2d193b4 100644 --- a/test/parallel/test-runner-coverage-source-map.js +++ b/test/parallel/test-runner-coverage-source-map.js @@ -19,6 +19,7 @@ function generateReport(report) { } const flags = [ + '--enable-source-maps', '--test', '--experimental-test-coverage', '--test-reporter', 'tap', ]; @@ -40,6 +41,28 @@ describe('Coverage with source maps', async () => { const spawned = await common.spawnPromisified(process.execPath, flags, { cwd: fixtures.path('test-runner', 'coverage') }); + + t.assert.strictEqual(spawned.stderr, ''); + t.assert.ok(spawned.stdout.includes(report)); + t.assert.strictEqual(spawned.code, 1); + }); + + await it('should only work with --enable-source-maps', async (t) => { + const report = generateReport([ + '# --------------------------------------------------------------', + '# file | line % | branch % | funcs % | uncovered lines', + '# --------------------------------------------------------------', + '# a.test.mjs | 100.00 | 100.00 | 100.00 | ', + '# index.test.js | 71.43 | 66.67 | 100.00 | 6-7', + '# stdin.test.js | 100.00 | 100.00 | 100.00 | ', + '# --------------------------------------------------------------', + '# all files | 85.71 | 87.50 | 100.00 | ', + '# --------------------------------------------------------------', + ]); + + const spawned = await common.spawnPromisified(process.execPath, flags.slice(1), { + cwd: fixtures.path('test-runner', 'coverage') + }); t.assert.strictEqual(spawned.stderr, ''); t.assert.ok(spawned.stdout.includes(report)); t.assert.strictEqual(spawned.code, 1);