@code-pushup/coverage-plugin 0.85.0 → 0.87.0
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.
- package/package.json +3 -4
- package/src/lib/nx/coverage-paths.d.ts +1 -1
- package/src/lib/nx/coverage-paths.js +6 -13
- package/src/lib/nx/coverage-paths.js.map +1 -1
- package/src/lib/runner/index.js +1 -11
- package/src/lib/runner/index.js.map +1 -1
- package/src/lib/runner/lcov/lcov-runner.js +2 -2
- package/src/lib/runner/lcov/lcov-runner.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-pushup/coverage-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.87.0",
|
|
4
4
|
"description": "Code PushUp plugin for tracking code coverage ☂",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/plugin-coverage#readme",
|
|
@@ -34,9 +34,8 @@
|
|
|
34
34
|
},
|
|
35
35
|
"type": "module",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@code-pushup/models": "0.
|
|
38
|
-
"@code-pushup/utils": "0.
|
|
39
|
-
"ansis": "^3.3.0",
|
|
37
|
+
"@code-pushup/models": "0.87.0",
|
|
38
|
+
"@code-pushup/utils": "0.87.0",
|
|
40
39
|
"parse-lcov": "^1.0.4",
|
|
41
40
|
"yargs": "^17.7.2",
|
|
42
41
|
"zod": "^4.0.5"
|
|
@@ -6,7 +6,7 @@ import type { CoverageResult } from '../config.js';
|
|
|
6
6
|
* @param targets nx targets to be used for measuring coverage, test by default
|
|
7
7
|
* @returns An array of coverage result information for the coverage plugin.
|
|
8
8
|
*/
|
|
9
|
-
export declare function getNxCoveragePaths(targets?: string[]
|
|
9
|
+
export declare function getNxCoveragePaths(targets?: string[]): Promise<CoverageResult[]>;
|
|
10
10
|
export type VitestCoverageConfig = {
|
|
11
11
|
test: {
|
|
12
12
|
coverage?: {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { bold } from 'ansis';
|
|
2
1
|
import path from 'node:path';
|
|
3
|
-
import { importModule,
|
|
2
|
+
import { importModule, logger, stringifyError } from '@code-pushup/utils';
|
|
4
3
|
/**
|
|
5
4
|
* Resolves the cached project graph for the current Nx workspace.
|
|
6
5
|
* First tries to read cache and if not possible, go for the async creation.
|
|
@@ -11,7 +10,7 @@ async function resolveCachedProjectGraph() {
|
|
|
11
10
|
return readCachedProjectGraph();
|
|
12
11
|
}
|
|
13
12
|
catch (error) {
|
|
14
|
-
|
|
13
|
+
logger.info(`Could not read cached project graph, falling back to async creation.
|
|
15
14
|
${stringifyError(error)}`);
|
|
16
15
|
return await createProjectGraphAsync({ exitOnError: false });
|
|
17
16
|
}
|
|
@@ -20,24 +19,18 @@ async function resolveCachedProjectGraph() {
|
|
|
20
19
|
* @param targets nx targets to be used for measuring coverage, test by default
|
|
21
20
|
* @returns An array of coverage result information for the coverage plugin.
|
|
22
21
|
*/
|
|
23
|
-
export async function getNxCoveragePaths(targets = ['test']
|
|
24
|
-
|
|
25
|
-
ui().logger.info(bold('💡 Gathering coverage from the following nx projects:'));
|
|
26
|
-
}
|
|
22
|
+
export async function getNxCoveragePaths(targets = ['test']) {
|
|
23
|
+
logger.debug('💡 Gathering coverage from the following nx projects:');
|
|
27
24
|
const { nodes } = await resolveCachedProjectGraph();
|
|
28
25
|
const coverageResults = await Promise.all(targets.map(async (target) => {
|
|
29
26
|
const relevantNodes = Object.values(nodes).filter(graph => hasNxTarget(graph, target));
|
|
30
27
|
return await Promise.all(relevantNodes.map(async ({ name, data }) => {
|
|
31
28
|
const coveragePaths = await getCoveragePathsForTarget(data, target);
|
|
32
|
-
|
|
33
|
-
ui().logger.info(`- ${name}: ${target}`);
|
|
34
|
-
}
|
|
29
|
+
logger.debug(`- ${name}: ${target}`);
|
|
35
30
|
return coveragePaths;
|
|
36
31
|
}));
|
|
37
32
|
}));
|
|
38
|
-
|
|
39
|
-
ui().logger.info('\n');
|
|
40
|
-
}
|
|
33
|
+
logger.debug('');
|
|
41
34
|
return coverageResults.flat();
|
|
42
35
|
}
|
|
43
36
|
function hasNxTarget(project, target) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coverage-paths.js","sourceRoot":"","sources":["../../../../src/lib/nx/coverage-paths.ts"],"names":[],"mappings":"AAQA,OAAO,
|
|
1
|
+
{"version":3,"file":"coverage-paths.js","sourceRoot":"","sources":["../../../../src/lib/nx/coverage-paths.ts"],"names":[],"mappings":"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"}
|
package/src/lib/runner/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { bold } from 'ansis';
|
|
2
1
|
import { writeFile } from 'node:fs/promises';
|
|
3
2
|
import path from 'node:path';
|
|
4
|
-
import {
|
|
3
|
+
import { createRunnerFiles, ensureDirectoryExists, executeProcess, filePathToCliArg, objectToCliArgs, readJsonFile, } from '@code-pushup/utils';
|
|
5
4
|
import { lcovResultsToAuditOutputs } from './lcov/lcov-runner.js';
|
|
6
5
|
export async function executeRunner({ runnerConfigPath, runnerOutputPath, }) {
|
|
7
6
|
const { reports, coverageToolCommand, continueOnCommandFail, coverageTypes } = await readJsonFile(runnerConfigPath);
|
|
@@ -12,15 +11,6 @@ export async function executeRunner({ runnerConfigPath, runnerOutputPath, }) {
|
|
|
12
11
|
await executeProcess({ command, args });
|
|
13
12
|
}
|
|
14
13
|
catch (error) {
|
|
15
|
-
if (error instanceof ProcessError) {
|
|
16
|
-
const loggingFn = continueOnCommandFail
|
|
17
|
-
? ui().logger.warning.bind(ui().logger)
|
|
18
|
-
: ui().logger.error.bind(ui().logger);
|
|
19
|
-
loggingFn(bold('stdout from failed coverage tool process:'));
|
|
20
|
-
loggingFn(error.stdout);
|
|
21
|
-
loggingFn(bold('stderr from failed coverage tool process:'));
|
|
22
|
-
loggingFn(error.stderr);
|
|
23
|
-
}
|
|
24
14
|
if (!continueOnCommandFail) {
|
|
25
15
|
throw new Error('Coverage plugin: Running coverage tool failed. Make sure all your provided tests are passing.');
|
|
26
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/runner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/runner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,gBAAgB,EAChB,gBAAgB,GACC;IACjB,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAC1E,MAAM,YAAY,CAA4B,gBAAgB,CAAC,CAAC;IAElE,gCAAgC;IAChC,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAE7E,MAAM,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,MAAiC;IAEjC,uCAAuC;IACvC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM,iBAAiB,CACpE,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACvB,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,MAAM;QACf,IAAI,EAAE;YACJ,gBAAgB,CAAC,UAAU,CAAC;YAC5B,GAAG,eAAe,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;SAC3D;QACD,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,gBAAgB;KAC7B,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { exists, getGitRoot, objectFromEntries, objectToEntries, readTextFile, toUnixNewlines,
|
|
2
|
+
import { exists, getGitRoot, logger, objectFromEntries, objectToEntries, readTextFile, toUnixNewlines, } from '@code-pushup/utils';
|
|
3
3
|
import { mergeLcovResults } from './merge-lcov.js';
|
|
4
4
|
import { parseLcov } from './parse-lcov.js';
|
|
5
5
|
import { lcovCoverageToAuditOutput, recordToStatFunctionMapper, } from './transform.js';
|
|
@@ -39,7 +39,7 @@ export async function parseLcovFiles(results) {
|
|
|
39
39
|
const resultsPath = typeof result === 'string' ? result : result.resultsPath;
|
|
40
40
|
const lcovFileContent = await readTextFile(resultsPath);
|
|
41
41
|
if (lcovFileContent.trim() === '') {
|
|
42
|
-
|
|
42
|
+
logger.warn(`Empty lcov report file detected at ${resultsPath}.`);
|
|
43
43
|
}
|
|
44
44
|
const parsedRecords = parseLcov(toUnixNewlines(lcovFileContent));
|
|
45
45
|
return parsedRecords.map((record) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lcov-runner.js","sourceRoot":"","sources":["../../../../../src/lib/runner/lcov/lcov-runner.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAEL,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"lcov-runner.js","sourceRoot":"","sources":["../../../../../src/lib/runner/lcov/lcov-runner.ts"],"names":[],"mappings":"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"}
|