@vitest/coverage-istanbul 2.0.0-beta.10 → 2.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/provider.js +95 -33
  2. package/package.json +3 -3
package/dist/provider.js CHANGED
@@ -128,8 +128,13 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
128
128
  ...config,
129
129
  // Resolved fields
130
130
  provider: "istanbul",
131
- reportsDirectory: resolve(ctx.config.root, config.reportsDirectory || coverageConfigDefaults.reportsDirectory),
132
- reporter: this.resolveReporters(config.reporter || coverageConfigDefaults.reporter),
131
+ reportsDirectory: resolve(
132
+ ctx.config.root,
133
+ config.reportsDirectory || coverageConfigDefaults.reportsDirectory
134
+ ),
135
+ reporter: this.resolveReporters(
136
+ config.reporter || coverageConfigDefaults.reporter
137
+ ),
133
138
  thresholds: config.thresholds && {
134
139
  ...config.thresholds,
135
140
  lines: config.thresholds["100"] ? 100 : config.thresholds.lines,
@@ -159,18 +164,29 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
159
164
  });
160
165
  const shard = this.ctx.config.shard;
161
166
  const tempDirectory = `.tmp${shard ? `-${shard.index}-${shard.count}` : ""}`;
162
- this.coverageFilesDirectory = resolve(this.options.reportsDirectory, tempDirectory);
167
+ this.coverageFilesDirectory = resolve(
168
+ this.options.reportsDirectory,
169
+ tempDirectory
170
+ );
163
171
  }
164
172
  resolveOptions() {
165
173
  return this.options;
166
174
  }
167
175
  onFileTransform(sourceCode, id, pluginCtx) {
168
- if (!this.testExclude.shouldInstrument(id))
176
+ if (!this.testExclude.shouldInstrument(id)) {
169
177
  return;
178
+ }
170
179
  const sourceMap = pluginCtx.getCombinedSourcemap();
171
180
  sourceMap.sources = sourceMap.sources.map(removeQueryParameters);
172
- sourceCode = sourceCode.replaceAll("_ts_decorate", "/* istanbul ignore next */_ts_decorate");
173
- const code = this.instrumenter.instrumentSync(sourceCode, id, sourceMap);
181
+ sourceCode = sourceCode.replaceAll(
182
+ "_ts_decorate",
183
+ "/* istanbul ignore next */_ts_decorate"
184
+ );
185
+ const code = this.instrumenter.instrumentSync(
186
+ sourceCode,
187
+ id,
188
+ sourceMap
189
+ );
174
190
  const map = this.instrumenter.lastSourceMap();
175
191
  return { code, map };
176
192
  }
@@ -180,25 +196,40 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
180
196
  * backwards compatibility is a breaking change.
181
197
  */
182
198
  onAfterSuiteRun({ coverage, transformMode, projectName }) {
183
- if (!coverage)
199
+ if (!coverage) {
184
200
  return;
185
- if (transformMode !== "web" && transformMode !== "ssr")
201
+ }
202
+ if (transformMode !== "web" && transformMode !== "ssr") {
186
203
  throw new Error(`Invalid transform mode: ${transformMode}`);
204
+ }
187
205
  let entry = this.coverageFiles.get(projectName || DEFAULT_PROJECT);
188
206
  if (!entry) {
189
207
  entry = { web: [], ssr: [] };
190
208
  this.coverageFiles.set(projectName || DEFAULT_PROJECT, entry);
191
209
  }
192
- const filename = resolve(this.coverageFilesDirectory, `coverage-${uniqueId++}.json`);
210
+ const filename = resolve(
211
+ this.coverageFilesDirectory,
212
+ `coverage-${uniqueId++}.json`
213
+ );
193
214
  entry[transformMode].push(filename);
194
215
  const promise = promises.writeFile(filename, JSON.stringify(coverage), "utf-8");
195
216
  this.pendingPromises.push(promise);
196
217
  }
197
218
  async clean(clean = true) {
198
- if (clean && existsSync(this.options.reportsDirectory))
199
- await promises.rm(this.options.reportsDirectory, { recursive: true, force: true, maxRetries: 10 });
200
- if (existsSync(this.coverageFilesDirectory))
201
- await promises.rm(this.coverageFilesDirectory, { recursive: true, force: true, maxRetries: 10 });
219
+ if (clean && existsSync(this.options.reportsDirectory)) {
220
+ await promises.rm(this.options.reportsDirectory, {
221
+ recursive: true,
222
+ force: true,
223
+ maxRetries: 10
224
+ });
225
+ }
226
+ if (existsSync(this.coverageFilesDirectory)) {
227
+ await promises.rm(this.coverageFilesDirectory, {
228
+ recursive: true,
229
+ force: true,
230
+ maxRetries: 10
231
+ });
232
+ }
202
233
  await promises.mkdir(this.coverageFilesDirectory, { recursive: true });
203
234
  this.coverageFiles = /* @__PURE__ */ new Map();
204
235
  this.pendingPromises = [];
@@ -210,26 +241,38 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
210
241
  await Promise.all(this.pendingPromises);
211
242
  this.pendingPromises = [];
212
243
  for (const coveragePerProject of this.coverageFiles.values()) {
213
- for (const filenames of [coveragePerProject.ssr, coveragePerProject.web]) {
244
+ for (const filenames of [
245
+ coveragePerProject.ssr,
246
+ coveragePerProject.web
247
+ ]) {
214
248
  const coverageMapByTransformMode = libCoverage.createCoverageMap({});
215
- for (const chunk of this.toSlices(filenames, this.options.processingConcurrency)) {
249
+ for (const chunk of this.toSlices(
250
+ filenames,
251
+ this.options.processingConcurrency
252
+ )) {
216
253
  if (debug.enabled) {
217
254
  index += chunk.length;
218
255
  debug("Covered files %d/%d", index, total);
219
256
  }
220
- await Promise.all(chunk.map(async (filename) => {
221
- const contents = await promises.readFile(filename, "utf-8");
222
- const coverage = JSON.parse(contents);
223
- coverageMapByTransformMode.merge(coverage);
224
- }));
257
+ await Promise.all(
258
+ chunk.map(async (filename) => {
259
+ const contents = await promises.readFile(filename, "utf-8");
260
+ const coverage = JSON.parse(contents);
261
+ coverageMapByTransformMode.merge(coverage);
262
+ })
263
+ );
225
264
  }
226
- const transformedCoverage = await transformCoverage(coverageMapByTransformMode);
265
+ const transformedCoverage = await transformCoverage(
266
+ coverageMapByTransformMode
267
+ );
227
268
  coverageMap.merge(transformedCoverage);
228
269
  }
229
270
  }
230
271
  if (this.options.all && allTestsRun) {
231
272
  const coveredFiles = coverageMap.files();
232
- const uncoveredCoverage = await this.getCoverageMapForUncoveredFiles(coveredFiles);
273
+ const uncoveredCoverage = await this.getCoverageMapForUncoveredFiles(
274
+ coveredFiles
275
+ );
233
276
  coverageMap.merge(await transformCoverage(uncoveredCoverage));
234
277
  }
235
278
  return coverageMap;
@@ -243,8 +286,9 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
243
286
  if (!keepResults) {
244
287
  this.coverageFiles = /* @__PURE__ */ new Map();
245
288
  await promises.rm(this.coverageFilesDirectory, { recursive: true });
246
- if (readdirSync(this.options.reportsDirectory).length === 0)
289
+ if (readdirSync(this.options.reportsDirectory).length === 0) {
247
290
  await promises.rm(this.options.reportsDirectory, { recursive: true });
291
+ }
248
292
  }
249
293
  }
250
294
  async generateReports(coverageMap, allTestsRun) {
@@ -253,8 +297,11 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
253
297
  coverageMap,
254
298
  watermarks: this.options.watermarks
255
299
  });
256
- if (this.hasTerminalReporter(this.options.reporter))
257
- this.ctx.logger.log(c.blue(" % ") + c.dim("Coverage report from ") + c.yellow(this.name));
300
+ if (this.hasTerminalReporter(this.options.reporter)) {
301
+ this.ctx.logger.log(
302
+ c.blue(" % ") + c.dim("Coverage report from ") + c.yellow(this.name)
303
+ );
304
+ }
258
305
  for (const reporter of this.options.reporter) {
259
306
  reports.create(reporter[0], {
260
307
  skipFull: this.options.skipFull,
@@ -274,30 +321,45 @@ class IstanbulCoverageProvider extends BaseCoverageProvider {
274
321
  perFile: this.options.thresholds.perFile
275
322
  });
276
323
  if (this.options.thresholds.autoUpdate && allTestsRun) {
277
- if (!this.ctx.server.config.configFile)
278
- throw new Error('Missing configurationFile. The "coverage.thresholds.autoUpdate" can only be enabled when configuration file is used.');
324
+ if (!this.ctx.server.config.configFile) {
325
+ throw new Error(
326
+ 'Missing configurationFile. The "coverage.thresholds.autoUpdate" can only be enabled when configuration file is used.'
327
+ );
328
+ }
279
329
  const configFilePath = this.ctx.server.config.configFile;
280
- const configModule = parseModule(await promises.readFile(configFilePath, "utf8"));
330
+ const configModule = parseModule(
331
+ await promises.readFile(configFilePath, "utf8")
332
+ );
281
333
  this.updateThresholds({
282
334
  thresholds: resolvedThresholds,
283
335
  perFile: this.options.thresholds.perFile,
284
336
  configurationFile: configModule,
285
- onUpdate: () => writeFileSync(configFilePath, configModule.generate().code, "utf-8")
337
+ onUpdate: () => writeFileSync(
338
+ configFilePath,
339
+ configModule.generate().code,
340
+ "utf-8"
341
+ )
286
342
  });
287
343
  }
288
344
  }
289
345
  }
290
346
  async mergeReports(coverageMaps) {
291
347
  const coverageMap = libCoverage.createCoverageMap({});
292
- for (const coverage of coverageMaps)
348
+ for (const coverage of coverageMaps) {
293
349
  coverageMap.merge(coverage);
350
+ }
294
351
  await this.generateReports(coverageMap, true);
295
352
  }
296
353
  async getCoverageMapForUncoveredFiles(coveredFiles) {
297
354
  const allFiles = await this.testExclude.glob(this.ctx.config.root);
298
- let includedFiles = allFiles.map((file) => resolve(this.ctx.config.root, file));
299
- if (this.ctx.config.changed)
300
- includedFiles = (this.ctx.config.related || []).filter((file) => includedFiles.includes(file));
355
+ let includedFiles = allFiles.map(
356
+ (file) => resolve(this.ctx.config.root, file)
357
+ );
358
+ if (this.ctx.config.changed) {
359
+ includedFiles = (this.ctx.config.related || []).filter(
360
+ (file) => includedFiles.includes(file)
361
+ );
362
+ }
301
363
  const uncoveredFiles = includedFiles.filter((file) => !coveredFiles.includes(file)).sort();
302
364
  const cacheKey = (/* @__PURE__ */ new Date()).getTime();
303
365
  const coverageMap = libCoverage.createCoverageMap({});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vitest/coverage-istanbul",
3
3
  "type": "module",
4
- "version": "2.0.0-beta.10",
4
+ "version": "2.0.0-beta.11",
5
5
  "description": "Istanbul coverage provider for Vitest",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -37,7 +37,7 @@
37
37
  "dist"
38
38
  ],
39
39
  "peerDependencies": {
40
- "vitest": "2.0.0-beta.10"
40
+ "vitest": "2.0.0-beta.11"
41
41
  },
42
42
  "dependencies": {
43
43
  "debug": "^4.3.5",
@@ -58,7 +58,7 @@
58
58
  "@types/istanbul-lib-source-maps": "^4.0.4",
59
59
  "@types/istanbul-reports": "^3.0.4",
60
60
  "pathe": "^1.1.2",
61
- "vitest": "2.0.0-beta.10"
61
+ "vitest": "2.0.0-beta.11"
62
62
  },
63
63
  "scripts": {
64
64
  "build": "rimraf dist && rollup -c",