test_runner: pass options directly to TestCoverage

PR-URL: https://github.com/nodejs/node/pull/55578
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Raz Luvaton <rluvaton@gmail.com>
This commit is contained in:
Aviv Keller 2024-11-01 10:20:19 -04:00 committed by GitHub
parent 3d979dd059
commit 9b6cea6ebe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -59,18 +59,10 @@ class CoverageLine {
class TestCoverage {
constructor(coverageDirectory,
originalCoverageDirectory,
workingDirectory,
excludeGlobs,
includeGlobs,
sourceMaps,
thresholds) {
options) {
this.coverageDirectory = coverageDirectory;
this.originalCoverageDirectory = originalCoverageDirectory;
this.workingDirectory = workingDirectory;
this.excludeGlobs = excludeGlobs;
this.includeGlobs = includeGlobs;
this.sourceMaps = sourceMaps;
this.thresholds = thresholds;
this.options = options;
}
#sourceLines = new SafeMap();
@ -143,7 +135,7 @@ class TestCoverage {
const coverage = this.getCoverageFromDirectory();
const coverageSummary = {
__proto__: null,
workingDirectory: this.workingDirectory,
workingDirectory: this.options.cwd,
files: [],
totals: {
__proto__: null,
@ -157,7 +149,12 @@ class TestCoverage {
coveredBranchPercent: 0,
coveredFunctionPercent: 0,
},
thresholds: this.thresholds,
thresholds: {
__proto__: null,
line: this.options.lineCoverage,
branch: this.options.branchCoverage,
function: this.options.functionCoverage,
},
};
if (!coverage) {
@ -348,7 +345,7 @@ class TestCoverage {
mapCoverageWithSourceMap(coverage) {
const { result } = coverage;
const sourceMapCache = coverage['source-map-cache'];
if (!this.sourceMaps || !sourceMapCache) {
if (!this.options.sourceMaps || !sourceMapCache) {
return result;
}
const newResult = new SafeMap();
@ -462,21 +459,24 @@ class TestCoverage {
if (!StringPrototypeStartsWith(url, 'file:')) return true;
const absolutePath = fileURLToPath(url);
const relativePath = relative(this.workingDirectory, absolutePath);
const relativePath = relative(this.options.cwd, absolutePath);
const {
coverageExcludeGlobs: excludeGlobs,
coverageIncludeGlobs: includeGlobs,
} = this.options;
// This check filters out files that match the exclude globs.
if (this.excludeGlobs?.length > 0) {
for (let i = 0; i < this.excludeGlobs.length; ++i) {
if (matchesGlob(relativePath, this.excludeGlobs[i]) ||
matchesGlob(absolutePath, this.excludeGlobs[i])) return true;
if (excludeGlobs?.length > 0) {
for (let i = 0; i < excludeGlobs.length; ++i) {
if (matchesGlob(relativePath, excludeGlobs[i]) ||
matchesGlob(absolutePath, excludeGlobs[i])) return true;
}
}
// This check filters out files that do not match the include globs.
if (this.includeGlobs?.length > 0) {
for (let i = 0; i < this.includeGlobs.length; ++i) {
if (matchesGlob(relativePath, this.includeGlobs[i]) ||
matchesGlob(absolutePath, this.includeGlobs[i])) return false;
if (includeGlobs?.length > 0) {
for (let i = 0; i < includeGlobs.length; ++i) {
if (matchesGlob(relativePath, includeGlobs[i]) ||
matchesGlob(absolutePath, includeGlobs[i])) return false;
}
return true;
}
@ -518,16 +518,7 @@ function setupCoverage(options) {
return new TestCoverage(
coverageDirectory,
originalCoverageDirectory,
options.cwd,
options.coverageExcludeGlobs,
options.coverageIncludeGlobs,
options.sourceMaps,
{
__proto__: null,
line: options.lineCoverage,
branch: options.branchCoverage,
function: options.functionCoverage,
},
options,
);
}