From 0d356bbd8f8f99e331207a8ad752c0596d44c9e2 Mon Sep 17 00:00:00 2001 From: RedYetiDev <38299977+RedYetiDev@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:36:01 -0400 Subject: [PATCH] test_runner: require `--enable-source-maps` for sourcemap coverage --- 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 5da1d7e04b3146..8cbd960d72dd39 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(); @@ -514,6 +521,7 @@ function setupCoverage(options) { 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);