From fa5ff53bc2cec6d7a91e9bbb83e82e2a0cec3503 Mon Sep 17 00:00:00 2001 From: Mete0rfish Date: Sat, 9 Aug 2025 20:41:59 +0900 Subject: [PATCH 1/2] test_runner: add test for coverage control comments This commit adds a TC to verify the node:coverage control comments. --- .../coverage/coverage-control-comments.js | 25 ++++++++++++ test/parallel/test-runner-coverage.js | 38 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 test/fixtures/test-runner/coverage/coverage-control-comments.js diff --git a/test/fixtures/test-runner/coverage/coverage-control-comments.js b/test/fixtures/test-runner/coverage/coverage-control-comments.js new file mode 100644 index 00000000000000..3fbc2fbdd616bc --- /dev/null +++ b/test/fixtures/test-runner/coverage/coverage-control-comments.js @@ -0,0 +1,25 @@ +'use strict'; +const { test } = require('node:test'); + +function coveredFunction() { + return 'This function is covered in coverage'; +} + +/* node:coverage ignore next 7 */ +function ignoredFunctionDefinitionWithCount() { + const ignoredVar = true; + if (ignoredVar) { + return 'This line is ignored'; + } + return 'This should not be returned'; +} + +/* node:coverage disable */ +function disabledFunction() { + return 'This function is entirely disabled in coverage'; +} +/* node:coverage enable */ + +test('coverage control comments fixture', () => { + coveredFunction(); +}); diff --git a/test/parallel/test-runner-coverage.js b/test/parallel/test-runner-coverage.js index 0de2af4d57a98c..8c476f134565b3 100644 --- a/test/parallel/test-runner-coverage.js +++ b/test/parallel/test-runner-coverage.js @@ -550,3 +550,41 @@ test('correctly prints the coverage report of files contained in parent director assert(result.stdout.toString().includes(report)); assert.strictEqual(result.status, 0); }); + +test('should respect /* node:coverage */ comments', skipIfNoInspector, () => { + let report = [ + '# start of coverage report', + '# ---------------------------------------------------------------------------------', + '# file | line % | branch % | funcs % | uncovered lines', + '# ---------------------------------------------------------------------------------', + '# test | | | | ', + '# fixtures | | | | ', + '# test-runner | | | | ', + '# coverage | | | | ', + '# coverage-control-comments.js | 100.00 | 100.00 | 100.00 | ', + '# ---------------------------------------------------------------------------------', + '# all files | 100.00 | 100.00 | 100.00 | ', + '# ---------------------------------------------------------------------------------', + '# end of coverage report', +].join('\n'); + + if (common.isWindows) { + return report.replaceAll('/', '\\'); + } + + const fixture = fixtures.path('test-runner', 'coverage', 'coverage-control-comments.js'); + const args = [ + '--test', + '--experimental-test-coverage', + '--test-coverage-exclude=!test/**', + '--test-reporter', + 'tap', + fixture, + ]; + + const result = spawnSync(process.execPath, args); + + assert.strictEqual(result.stderr.toString(), ''); + assert(result.stdout.toString().includes(report)); + assert.strictEqual(result.status, 0); +}); \ No newline at end of file From 6fdcdc0706985058855bab351a7d44b10cb3b22a Mon Sep 17 00:00:00 2001 From: Mete0rfish Date: Sat, 9 Aug 2025 21:02:06 +0900 Subject: [PATCH 2/2] test_runner: remove indentation for lint-js remove identation --- test/parallel/test-runner-coverage.js | 32 +++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/test/parallel/test-runner-coverage.js b/test/parallel/test-runner-coverage.js index 8c476f134565b3..724d56caaf8a74 100644 --- a/test/parallel/test-runner-coverage.js +++ b/test/parallel/test-runner-coverage.js @@ -552,21 +552,21 @@ test('correctly prints the coverage report of files contained in parent director }); test('should respect /* node:coverage */ comments', skipIfNoInspector, () => { - let report = [ - '# start of coverage report', - '# ---------------------------------------------------------------------------------', - '# file | line % | branch % | funcs % | uncovered lines', - '# ---------------------------------------------------------------------------------', - '# test | | | | ', - '# fixtures | | | | ', - '# test-runner | | | | ', - '# coverage | | | | ', - '# coverage-control-comments.js | 100.00 | 100.00 | 100.00 | ', - '# ---------------------------------------------------------------------------------', - '# all files | 100.00 | 100.00 | 100.00 | ', - '# ---------------------------------------------------------------------------------', - '# end of coverage report', -].join('\n'); + const report = [ + '# start of coverage report', + '# ---------------------------------------------------------------------------------', + '# file | line % | branch % | funcs % | uncovered lines', + '# ---------------------------------------------------------------------------------', + '# test | | | | ', + '# fixtures | | | | ', + '# test-runner | | | | ', + '# coverage | | | | ', + '# coverage-control-comments.js | 100.00 | 100.00 | 100.00 | ', + '# ---------------------------------------------------------------------------------', + '# all files | 100.00 | 100.00 | 100.00 | ', + '# ---------------------------------------------------------------------------------', + '# end of coverage report', + ].join('\n'); if (common.isWindows) { return report.replaceAll('/', '\\'); @@ -587,4 +587,4 @@ test('should respect /* node:coverage */ comments', skipIfNoInspector, () => { assert.strictEqual(result.stderr.toString(), ''); assert(result.stdout.toString().includes(report)); assert.strictEqual(result.status, 0); -}); \ No newline at end of file +});