apex-code-coverage-transformer 2.18.2 → 2.19.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/CHANGELOG.md +14 -0
- package/README.md +71 -24
- package/lib/handlers/BaseHandler.d.ts +2 -2
- package/lib/handlers/BaseHandler.js.map +1 -1
- package/lib/handlers/clover.js +1 -3
- package/lib/handlers/clover.js.map +1 -1
- package/lib/handlers/cobertura.js +1 -3
- package/lib/handlers/cobertura.js.map +1 -1
- package/lib/handlers/getHandler.d.ts +2 -0
- package/lib/handlers/getHandler.js +2 -0
- package/lib/handlers/getHandler.js.map +1 -1
- package/lib/handlers/githubActions.d.ts +33 -0
- package/lib/handlers/githubActions.js +82 -0
- package/lib/handlers/githubActions.js.map +1 -0
- package/lib/handlers/istanbulJson.d.ts +1 -1
- package/lib/handlers/istanbulJson.js +1 -1
- package/lib/handlers/istanbulJson.js.map +1 -1
- package/lib/handlers/jacoco.d.ts +1 -1
- package/lib/handlers/jacoco.js +1 -1
- package/lib/handlers/jacoco.js.map +1 -1
- package/lib/handlers/lcov.d.ts +1 -1
- package/lib/handlers/lcov.js +2 -4
- package/lib/handlers/lcov.js.map +1 -1
- package/lib/handlers/markdown.d.ts +28 -0
- package/lib/handlers/markdown.js +105 -0
- package/lib/handlers/markdown.js.map +1 -0
- package/lib/handlers/sonar.js +1 -3
- package/lib/handlers/sonar.js.map +1 -1
- package/lib/transformers/generators/generateGitHubActions.d.ts +2 -0
- package/lib/transformers/generators/generateGitHubActions.js +27 -0
- package/lib/transformers/generators/generateGitHubActions.js.map +1 -0
- package/lib/transformers/generators/generateHtml.d.ts +2 -0
- package/lib/transformers/generators/generateHtml.js +399 -0
- package/lib/transformers/generators/generateHtml.js.map +1 -0
- package/lib/transformers/generators/generateMarkdown.d.ts +2 -0
- package/lib/transformers/generators/generateMarkdown.js +39 -0
- package/lib/transformers/generators/generateMarkdown.js.map +1 -0
- package/lib/transformers/reportGenerator.d.ts +2 -2
- package/lib/transformers/reportGenerator.js +28 -449
- package/lib/transformers/reportGenerator.js.map +1 -1
- package/lib/utils/constants.d.ts +17 -0
- package/lib/utils/constants.js +31 -0
- package/lib/utils/constants.js.map +1 -1
- package/lib/utils/types.d.ts +48 -1
- package/messages/transformer.transform.md +2 -0
- package/oclif.manifest.json +5 -1
- package/package.json +30 -18
- package/oclif.lock +0 -10078
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## [2.19.0](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.18.3...v2.19.0) (2026-05-01)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* add markdown and github-actions output formats ([#283](https://github.com/mcarvin8/apex-code-coverage-transformer/issues/283)) ([4fa1c27](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/4fa1c27780cfe08268a282d3c0ce2499f54d2ed1))
|
|
14
|
+
|
|
15
|
+
## [2.18.3](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.18.2...v2.18.3) (2026-04-21)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **quality:** remove dead code in clover, cobertura, lcov, sonar handlers ([8c28d45](https://github.com/mcarvin8/apex-code-coverage-transformer/commit/8c28d4528da8058264f1bf5fbfabea3e6fd37c4c))
|
|
21
|
+
|
|
8
22
|
## [2.18.2](https://github.com/mcarvin8/apex-code-coverage-transformer/compare/v2.18.1...v2.18.2) (2026-04-10)
|
|
9
23
|
|
|
10
24
|
|
package/README.md
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
[](https://npmjs.org/package/apex-code-coverage-transformer)
|
|
5
5
|
[](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/LICENSE.md)
|
|
6
6
|
[](https://qlty.sh/gh/mcarvin8/projects/apex-code-coverage-transformer)
|
|
7
|
-
[](https://snyk.io//test/github/mcarvin8/apex-code-coverage-transformer?targetFile=package.json)
|
|
7
|
+
[](https://codecov.io/gh/mcarvin8/apex-code-coverage-transformer)
|
|
9
8
|
|
|
10
9
|
A Salesforce CLI plugin that converts Apex code coverage JSON (from deploy or test runs) into formats used by SonarQube, Codecov, GitHub, GitLab, Azure DevOps, Bitbucket, and other tools. Use it to keep coverage in sync with your CI/CD and code quality pipelines.
|
|
11
10
|
|
|
11
|
+
It also produces presentation-ready output for pull-request reviews: a Markdown summary for PR/MR comments and CI job summaries, and GitHub Actions workflow command annotations that surface uncovered lines inline on the PR diff. The GitHub Actions output is designed to pair with the Apex code quality annotations from [sf-cat](https://www.npmjs.com/package/sf-cat), so a single PR can show coverage gaps and quality findings side-by-side.
|
|
12
|
+
|
|
12
13
|
> Missing an output format via `--format`? Open an [issue](https://github.com/mcarvin8/apex-code-coverage-transformer/issues) or submit a [pull request](https://github.com/mcarvin8/apex-code-coverage-transformer/blob/main/CONTRIBUTING.md).
|
|
13
14
|
|
|
14
15
|
<!-- TABLE OF CONTENTS -->
|
|
@@ -46,7 +47,7 @@ A Salesforce CLI plugin that converts Apex code coverage JSON (from deploy or te
|
|
|
46
47
|
## Install
|
|
47
48
|
|
|
48
49
|
```bash
|
|
49
|
-
sf plugins install apex-code-coverage-transformer@
|
|
50
|
+
sf plugins install apex-code-coverage-transformer@latest
|
|
50
51
|
```
|
|
51
52
|
|
|
52
53
|
## Quick Start
|
|
@@ -88,6 +89,8 @@ This plugin is for Salesforce DX projects (`sfdx-project.json`). It maps Apex na
|
|
|
88
89
|
|
|
89
90
|
To run transformation automatically after deploy or test commands, use the [Hook](#automatic-transformation-hook).
|
|
90
91
|
|
|
92
|
+
> **Tip — diff-scoped coverage on PRs.** The Salesforce CLI already scopes `sf project deploy validate`/`start` coverage to whatever is in the deployed manifest. If your PR pipeline builds a manifest from the git diff (for example with [sfdx-git-delta](https://github.com/scolladon/sfdx-git-delta)) and then runs `sf project deploy validate --coverage-formatters json --manifest <delta>`, the resulting coverage JSON only contains the changed Apex. Running this plugin against that JSON gives you per-PR coverage with no extra flags — the diff scoping happens upstream in the deployment, not here.
|
|
93
|
+
|
|
91
94
|
### Salesforce CLI
|
|
92
95
|
|
|
93
96
|
**Deploy/validate** — coverage path: `coverage/coverage/coverage.json`
|
|
@@ -144,18 +147,20 @@ GLOBAL FLAGS
|
|
|
144
147
|
|
|
145
148
|
Use `-f` / `--format` to choose the output format. Multiple `-f` values produce multiple files with the format in the name (e.g. `coverage-sonar.xml`, `coverage-cobertura.xml`).
|
|
146
149
|
|
|
147
|
-
| Format
|
|
148
|
-
|
|
|
149
|
-
| sonar
|
|
150
|
-
| cobertura
|
|
151
|
-
| jacoco
|
|
152
|
-
| lcovonly
|
|
153
|
-
| clover
|
|
154
|
-
| json
|
|
155
|
-
| json-summary
|
|
156
|
-
| simplecov
|
|
157
|
-
| opencover
|
|
158
|
-
| html
|
|
150
|
+
| Format | Description | Typical use | Example |
|
|
151
|
+
| -------------- | -------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------- |
|
|
152
|
+
| sonar | SonarQube generic coverage | SonarQube, SonarCloud | `sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "sonar"` |
|
|
153
|
+
| cobertura | Cobertura XML | Codecov, Azure, Jenkins, GitLab, GitHub | `sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "cobertura"` |
|
|
154
|
+
| jacoco | JaCoCo XML | Codecov, Jenkins, Maven, Gradle | `sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "jacoco"` |
|
|
155
|
+
| lcovonly | LCOV | Codecov, Coveralls, GitHub | `sf acc-transformer transform -j "coverage.json" -r "coverage.info" -f "lcovonly"` |
|
|
156
|
+
| clover | Clover XML | Bamboo, Bitbucket, Jenkins | `sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "clover"` |
|
|
157
|
+
| json | Istanbul JSON | Istanbul/NYC, Codecov | `sf acc-transformer transform -j "coverage.json" -r "coverage.json" -f "json"` |
|
|
158
|
+
| json-summary | JSON summary | Badges, PR comments | `sf acc-transformer transform -j "coverage.json" -r "coverage.json" -f "json-summary"` |
|
|
159
|
+
| simplecov | SimpleCov JSON | Codecov, Ruby tools | `sf acc-transformer transform -j "coverage.json" -r "coverage.json" -f "simplecov"` |
|
|
160
|
+
| opencover | OpenCover XML | Azure DevOps, VS, Codecov | `sf acc-transformer transform -j "coverage.json" -r "coverage.xml" -f "opencover"` |
|
|
161
|
+
| html | HTML report | Browsers, CI artifacts | `sf acc-transformer transform -j "coverage.json" -r "coverage.html" -f "html"` |
|
|
162
|
+
| markdown | Markdown summary | PR/MR comments, CI job summaries | `sf acc-transformer transform -j "coverage.json" -r "coverage.md" -f "markdown"` |
|
|
163
|
+
| github-actions | GitHub Actions annotations | GitHub Actions PR diff annotations | `sf acc-transformer transform -j "coverage.json" -r "coverage.txt" -f "github-actions"` |
|
|
159
164
|
|
|
160
165
|
## CI/CD Integration
|
|
161
166
|
|
|
@@ -199,7 +204,7 @@ jobs:
|
|
|
199
204
|
|
|
200
205
|
### SonarQube
|
|
201
206
|
|
|
202
|
-
Use the **sonar** format and upload using SonarQube's generic test coverage report formatter, `sonar.coverageReportPaths`.
|
|
207
|
+
Use the **sonar** format and upload using SonarQube's generic test coverage report formatter, `sonar.coverageReportPaths`.
|
|
203
208
|
|
|
204
209
|
**Scanner:**
|
|
205
210
|
|
|
@@ -290,6 +295,48 @@ jobs:
|
|
|
290
295
|
path: code-coverage-results.md
|
|
291
296
|
```
|
|
292
297
|
|
|
298
|
+
#### Markdown PR comments (built-in)
|
|
299
|
+
|
|
300
|
+
Skip the third-party summary action by using the built-in `markdown` format. The output is ready to drop straight into a PR comment or the GitHub Actions [job summary](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary):
|
|
301
|
+
|
|
302
|
+
```yaml
|
|
303
|
+
- name: Run Apex Tests
|
|
304
|
+
run: sf apex run test --code-coverage --output-dir coverage --target-org ci-org
|
|
305
|
+
- name: Transform Coverage to Markdown
|
|
306
|
+
run: sf acc-transformer transform -j "coverage/test-result-codecoverage.json" -r "coverage.md" -f "markdown"
|
|
307
|
+
- name: Add coverage to job summary
|
|
308
|
+
run: cat coverage.md >> $GITHUB_STEP_SUMMARY
|
|
309
|
+
- name: Add Coverage PR Comment
|
|
310
|
+
uses: marocchino/sticky-pull-request-comment@v2
|
|
311
|
+
if: github.event_name == 'pull_request'
|
|
312
|
+
with:
|
|
313
|
+
recreate: true
|
|
314
|
+
path: coverage.md
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
The Markdown report includes an overall summary block, a per-package-directory table, and a file-level table sorted with the lowest coverage first so reviewers see the most actionable rows at the top.
|
|
318
|
+
|
|
319
|
+
#### GitHub Actions inline annotations
|
|
320
|
+
|
|
321
|
+
The `github-actions` format emits one [`::warning`](https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions) workflow command per uncovered Apex line, plus a `::notice` summary. When a step prints the file to stdout, the runner renders annotations inline on the PR diff and on the workflow run page.
|
|
322
|
+
|
|
323
|
+
```yaml
|
|
324
|
+
- name: Run Apex Tests
|
|
325
|
+
run: sf apex run test --code-coverage --output-dir coverage --target-org ci-org
|
|
326
|
+
- name: Transform Coverage to GitHub Actions Annotations
|
|
327
|
+
run: sf acc-transformer transform -j "coverage/test-result-codecoverage.json" -r "coverage.txt" -f "github-actions"
|
|
328
|
+
- name: Emit coverage annotations
|
|
329
|
+
run: cat coverage.txt
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
This pairs with the [`sf-cat`](https://www.npmjs.com/package/sf-cat) plugin's GitHub Actions output for code quality findings, so a single PR shows coverage gaps and quality issues as inline annotations on the same diff.
|
|
333
|
+
|
|
334
|
+
You can produce both at once with multiple `-f` flags:
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
sf acc-transformer transform -j "coverage/test-result-codecoverage.json" -f "markdown" -f "github-actions" -f "sonar"
|
|
338
|
+
```
|
|
339
|
+
|
|
293
340
|
### GitLab CI
|
|
294
341
|
|
|
295
342
|
Cobertura for coverage in the UI:
|
|
@@ -343,13 +390,13 @@ Create `.apexcodecovtransformer.config.json` in the project root to transform co
|
|
|
343
390
|
|
|
344
391
|
Sample configs: [Salesforce CLI](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/defaults/salesforce-cli/.apexcodecovtransformer.config.json), [SFDX Hardis](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/defaults/sfdx-hardis/.apexcodecovtransformer.config.json).
|
|
345
392
|
|
|
346
|
-
| Key | Required | Description
|
|
347
|
-
| -------------------------- | ---------- |
|
|
348
|
-
| `deployCoverageJsonPath` | For deploy | Path to deploy coverage JSON.
|
|
349
|
-
| `testCoverageJsonPath` | For test | Path to test coverage JSON.
|
|
393
|
+
| Key | Required | Description |
|
|
394
|
+
| -------------------------- | ---------- | ------------------------------------------------------------ |
|
|
395
|
+
| `deployCoverageJsonPath` | For deploy | Path to deploy coverage JSON. |
|
|
396
|
+
| `testCoverageJsonPath` | For test | Path to test coverage JSON. |
|
|
350
397
|
| `outputReportPath` | No | Output path (default: `coverage.[xml/info/json]` by format). |
|
|
351
|
-
| `format` | No | Format(s), comma-separated (default: `sonar`).
|
|
352
|
-
| `ignorePackageDirectories` | No | Comma-separated package directories to ignore.
|
|
398
|
+
| `format` | No | Format(s), comma-separated (default: `sonar`). |
|
|
399
|
+
| `ignorePackageDirectories` | No | Comma-separated package directories to ignore. |
|
|
353
400
|
|
|
354
401
|
## Troubleshooting
|
|
355
402
|
|
|
@@ -385,8 +432,8 @@ Error (1): ENOENT: no such file or directory: {packageDir}
|
|
|
385
432
|
|
|
386
433
|
## Contributing
|
|
387
434
|
|
|
388
|
-
Contributions are welcome. See [CONTRIBUTING.md](https://github.com/mcarvin8/apex-code-coverage-transformer/blob/main/CONTRIBUTING.md)
|
|
435
|
+
Contributions are welcome. See [CONTRIBUTING.md](https://github.com/mcarvin8/apex-code-coverage-transformer/blob/main/CONTRIBUTING.md).
|
|
389
436
|
|
|
390
437
|
## License
|
|
391
438
|
|
|
392
|
-
MIT
|
|
439
|
+
[MIT](https://raw.githubusercontent.com/mcarvin8/apex-code-coverage-transformer/main/LICENSE.md)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CoverageHandler, SonarCoverageObject, CoberturaCoverageObject, CloverCoverageObject, LcovCoverageObject, JaCoCoCoverageObject, IstanbulCoverageObject, JsonSummaryCoverageObject, SimpleCovCoverageObject, OpenCoverCoverageObject, HtmlCoverageObject } from '../utils/types.js';
|
|
1
|
+
import { CoverageHandler, SonarCoverageObject, CoberturaCoverageObject, CloverCoverageObject, LcovCoverageObject, JaCoCoCoverageObject, IstanbulCoverageObject, JsonSummaryCoverageObject, SimpleCovCoverageObject, OpenCoverCoverageObject, HtmlCoverageObject, MarkdownCoverageObject, GitHubActionsCoverageObject } from '../utils/types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Abstract base class for coverage handlers providing common utilities.
|
|
4
4
|
* Reduces code duplication across different format handlers.
|
|
@@ -47,5 +47,5 @@ export declare abstract class BaseHandler implements CoverageHandler {
|
|
|
47
47
|
'@name'?: string;
|
|
48
48
|
}>(items: T[]): T[];
|
|
49
49
|
abstract processFile(filePath: string, fileName: string, lines: Record<string, number>, sourceContent?: string): void;
|
|
50
|
-
abstract finalize(): SonarCoverageObject | CoberturaCoverageObject | CloverCoverageObject | LcovCoverageObject | JaCoCoCoverageObject | IstanbulCoverageObject | JsonSummaryCoverageObject | SimpleCovCoverageObject | OpenCoverCoverageObject | HtmlCoverageObject;
|
|
50
|
+
abstract finalize(): SonarCoverageObject | CoberturaCoverageObject | CloverCoverageObject | LcovCoverageObject | JaCoCoCoverageObject | IstanbulCoverageObject | JsonSummaryCoverageObject | SimpleCovCoverageObject | OpenCoverCoverageObject | HtmlCoverageObject | MarkdownCoverageObject | GitHubActionsCoverageObject;
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseHandler.js","sourceRoot":"","sources":["../../src/handlers/BaseHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseHandler.js","sourceRoot":"","sources":["../../src/handlers/BaseHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAkBb;;;GAGG;AACH,MAAM,OAAgB,WAAW;IAC/B;;;;;OAKG;IACH,kDAAkD;IACxC,iBAAiB,CAAC,KAA6B;QAMvD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAChF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5E,MAAM,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;QACjD,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED;;;;;;OAMG;IACH,kDAAkD;IACxC,oBAAoB,CAAC,KAA6B,EAAE,OAAgB;QAC5E,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;aACvD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACO,sBAAsB,CAAC,KAA6B;QAI5D,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;YAC/C,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;SACnD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,kDAAkD;IACxC,UAAU,CAAyE,KAAU;QACrG,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;CAsBF"}
|
package/lib/handlers/clover.js
CHANGED
|
@@ -80,9 +80,7 @@ export class CloverCoverageHandler extends BaseHandler {
|
|
|
80
80
|
projectMetrics['@ncloc'] += totalLines;
|
|
81
81
|
}
|
|
82
82
|
finalize() {
|
|
83
|
-
|
|
84
|
-
this.coverageObj.coverage.project.file = this.sortByPath(this.coverageObj.coverage.project.file);
|
|
85
|
-
}
|
|
83
|
+
this.coverageObj.coverage.project.file = this.sortByPath(this.coverageObj.coverage.project.file);
|
|
86
84
|
return this.coverageObj;
|
|
87
85
|
}
|
|
88
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clover.js","sourceRoot":"","sources":["../../src/handlers/clover.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACnC,WAAW,CAAuB;IAEnD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG;YACjB,QAAQ,EAAE;gBACR,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;gBACxB,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE;oBACP,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;oBACxB,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE;wBACP,aAAa,EAAE,CAAC;wBAChB,oBAAoB,EAAE,CAAC;wBACvB,eAAe,EAAE,CAAC;wBAClB,sBAAsB,EAAE,CAAC;wBACzB,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,WAAW,EAAE,CAAC;wBACd,kBAAkB,EAAE,CAAC;wBACrB,aAAa,EAAE,CAAC;wBAChB,MAAM,EAAE,CAAC;wBACT,QAAQ,EAAE,CAAC;wBACX,WAAW,EAAE,CAAC;wBACd,QAAQ,EAAE,CAAC;wBACX,UAAU,EAAE,CAAC;qBACd;oBACD,IAAI,EAAE,EAAE;iBACT;aACF;SACF,CAAC;IACJ,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAA6B;QAClF,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEnE,MAAM,OAAO,GAAe;YAC1B,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU;gBACzB,oBAAoB,EAAE,YAAY;gBAClC,eAAe,EAAE,CAAC;gBAClB,sBAAsB,EAAE,CAAC;gBACzB,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;aACrB;YACD,IAAI,EAAE,EAAE;SACT,CAAC;QACF,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC;gBAC1B,QAAQ,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;QAEjE,cAAc,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC;QAC5C,cAAc,CAAC,oBAAoB,CAAC,IAAI,YAAY,CAAC;QACrD,cAAc,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC;QAC1C,cAAc,CAAC,kBAAkB,CAAC,IAAI,YAAY,CAAC;QACnD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,cAAc,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC;QACrC,cAAc,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC;IACzC,CAAC;IAEM,QAAQ;QACb,IAAI,
|
|
1
|
+
{"version":3,"file":"clover.js","sourceRoot":"","sources":["../../src/handlers/clover.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,9 +76,7 @@ export class CoberturaCoverageHandler extends BaseHandler {
|
|
|
76
76
|
this.coverageObj.coverage['@line-rate'] = parseFloat((this.coverageObj.coverage['@lines-covered'] / this.coverageObj.coverage['@lines-valid']).toFixed(4));
|
|
77
77
|
this.coverageObj.coverage.packages.package.sort((a, b) => a['@name'].localeCompare(b['@name']));
|
|
78
78
|
for (const pkg of this.coverageObj.coverage.packages.package) {
|
|
79
|
-
|
|
80
|
-
pkg.classes.class.sort((a, b) => a['@filename'].localeCompare(b['@filename']));
|
|
81
|
-
}
|
|
79
|
+
pkg.classes.class.sort((a, b) => a['@filename'].localeCompare(b['@filename']));
|
|
82
80
|
}
|
|
83
81
|
return this.coverageObj;
|
|
84
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cobertura.js","sourceRoot":"","sources":["../../src/handlers/cobertura.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cobertura.js","sourceRoot":"","sources":["../../src/handlers/cobertura.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHandler.js","sourceRoot":"","sources":["../../src/handlers/getHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,mDAAmD;AACnD,OAAO,YAAY,CAAC;AACpB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,gBAAgB,CAAC;AACxB,OAAO,gBAAgB,CAAC;AACxB,OAAO,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"getHandler.js","sourceRoot":"","sources":["../../src/handlers/getHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,mDAAmD;AACnD,OAAO,YAAY,CAAC;AACpB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,gBAAgB,CAAC;AACxB,OAAO,gBAAgB,CAAC;AACxB,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { GitHubActionsCoverageObject } from '../utils/types.js';
|
|
2
|
+
import { BaseHandler } from './BaseHandler.js';
|
|
3
|
+
/**
|
|
4
|
+
* Handler for generating GitHub Actions workflow command output.
|
|
5
|
+
*
|
|
6
|
+
* Emits one `::warning file=...,line=...` annotation per uncovered Apex line
|
|
7
|
+
* plus a `::notice` summary line. When the resulting file is printed to stdout
|
|
8
|
+
* by a workflow step, the GitHub Actions runner renders the annotations
|
|
9
|
+
* inline on the PR diff and on the workflow run page.
|
|
10
|
+
*
|
|
11
|
+
* Pairs with the existing `sf-cat` plugin's GitHub Actions output for code
|
|
12
|
+
* quality, giving Salesforce teams a unified annotation experience for
|
|
13
|
+
* coverage and quality on the same PR.
|
|
14
|
+
*
|
|
15
|
+
* @see https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```yaml
|
|
19
|
+
* - name: Transform coverage to GitHub Actions annotations
|
|
20
|
+
* run: sf acc-transformer transform -j coverage.json -r coverage.txt -f github-actions
|
|
21
|
+
* - name: Emit annotations
|
|
22
|
+
* run: cat coverage.txt
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare class GitHubActionsCoverageHandler extends BaseHandler {
|
|
26
|
+
private readonly coverageObj;
|
|
27
|
+
private totalLinesAccumulator;
|
|
28
|
+
private coveredLinesAccumulator;
|
|
29
|
+
private fileCount;
|
|
30
|
+
constructor();
|
|
31
|
+
processFile(filePath: string, _fileName: string, lines: Record<string, number>): void;
|
|
32
|
+
finalize(): GitHubActionsCoverageObject;
|
|
33
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
import { BaseHandler } from './BaseHandler.js';
|
|
3
|
+
import { HandlerRegistry } from './HandlerRegistry.js';
|
|
4
|
+
/**
|
|
5
|
+
* Handler for generating GitHub Actions workflow command output.
|
|
6
|
+
*
|
|
7
|
+
* Emits one `::warning file=...,line=...` annotation per uncovered Apex line
|
|
8
|
+
* plus a `::notice` summary line. When the resulting file is printed to stdout
|
|
9
|
+
* by a workflow step, the GitHub Actions runner renders the annotations
|
|
10
|
+
* inline on the PR diff and on the workflow run page.
|
|
11
|
+
*
|
|
12
|
+
* Pairs with the existing `sf-cat` plugin's GitHub Actions output for code
|
|
13
|
+
* quality, giving Salesforce teams a unified annotation experience for
|
|
14
|
+
* coverage and quality on the same PR.
|
|
15
|
+
*
|
|
16
|
+
* @see https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```yaml
|
|
20
|
+
* - name: Transform coverage to GitHub Actions annotations
|
|
21
|
+
* run: sf acc-transformer transform -j coverage.json -r coverage.txt -f github-actions
|
|
22
|
+
* - name: Emit annotations
|
|
23
|
+
* run: cat coverage.txt
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export class GitHubActionsCoverageHandler extends BaseHandler {
|
|
27
|
+
coverageObj;
|
|
28
|
+
totalLinesAccumulator = 0;
|
|
29
|
+
coveredLinesAccumulator = 0;
|
|
30
|
+
fileCount = 0;
|
|
31
|
+
constructor() {
|
|
32
|
+
super();
|
|
33
|
+
this.coverageObj = {
|
|
34
|
+
summary: {
|
|
35
|
+
totalLines: 0,
|
|
36
|
+
coveredLines: 0,
|
|
37
|
+
uncoveredLines: 0,
|
|
38
|
+
lineRate: 0,
|
|
39
|
+
fileCount: 0,
|
|
40
|
+
},
|
|
41
|
+
uncoveredLines: [],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
processFile(filePath, _fileName, lines) {
|
|
45
|
+
const { totalLines, coveredLines } = this.calculateCoverage(lines);
|
|
46
|
+
this.totalLinesAccumulator += totalLines;
|
|
47
|
+
this.coveredLinesAccumulator += coveredLines;
|
|
48
|
+
this.fileCount += 1;
|
|
49
|
+
const uncovered = this.extractLinesByStatus(lines, false);
|
|
50
|
+
for (const lineNumber of uncovered) {
|
|
51
|
+
this.coverageObj.uncoveredLines.push({ filePath, lineNumber });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
finalize() {
|
|
55
|
+
const totalLines = this.totalLinesAccumulator;
|
|
56
|
+
const coveredLines = this.coveredLinesAccumulator;
|
|
57
|
+
const uncoveredLines = totalLines - coveredLines;
|
|
58
|
+
const lineRate = totalLines > 0 ? coveredLines / totalLines : 0;
|
|
59
|
+
this.coverageObj.summary = {
|
|
60
|
+
totalLines,
|
|
61
|
+
coveredLines,
|
|
62
|
+
uncoveredLines,
|
|
63
|
+
lineRate,
|
|
64
|
+
fileCount: this.fileCount,
|
|
65
|
+
};
|
|
66
|
+
this.coverageObj.uncoveredLines.sort((a, b) => {
|
|
67
|
+
const pathCompare = a.filePath.localeCompare(b.filePath);
|
|
68
|
+
if (pathCompare !== 0)
|
|
69
|
+
return pathCompare;
|
|
70
|
+
return a.lineNumber - b.lineNumber;
|
|
71
|
+
});
|
|
72
|
+
return this.coverageObj;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
HandlerRegistry.register({
|
|
76
|
+
name: 'github-actions',
|
|
77
|
+
description: 'GitHub Actions workflow command annotations for uncovered lines',
|
|
78
|
+
fileExtension: '.txt',
|
|
79
|
+
handler: () => new GitHubActionsCoverageHandler(),
|
|
80
|
+
compatibleWith: ['GitHub Actions'],
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=githubActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"githubActions.js","sourceRoot":"","sources":["../../src/handlers/githubActions.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,4BAA6B,SAAQ,WAAW;IAC1C,WAAW,CAA8B;IAClD,qBAAqB,GAAG,CAAC,CAAC;IAC1B,uBAAuB,GAAG,CAAC,CAAC;IAC5B,SAAS,GAAG,CAAC,CAAC;IAEtB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG;YACjB,OAAO,EAAE;gBACP,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,CAAC;gBACf,cAAc,EAAE,CAAC;gBACjB,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,CAAC;aACb;YACD,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,SAAiB,EAAE,KAA6B;QACnF,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,CAAC,qBAAqB,IAAI,UAAU,CAAC;QACzC,IAAI,CAAC,uBAAuB,IAAI,YAAY,CAAC;QAC7C,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1D,KAAK,MAAM,UAAU,IAAI,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAClD,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;QACjD,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG;YACzB,UAAU;YACV,YAAY;YACZ,cAAc;YACd,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,WAAW,KAAK,CAAC;gBAAE,OAAO,WAAW,CAAC;YAC1C,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,eAAe,CAAC,QAAQ,CAAC;IACvB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,iEAAiE;IAC9E,aAAa,EAAE,MAAM;IACrB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,4BAA4B,EAAE;IACjD,cAAc,EAAE,CAAC,gBAAgB,CAAC;CACnC,CAAC,CAAC"}
|
|
@@ -17,6 +17,6 @@ import { BaseHandler } from './BaseHandler.js';
|
|
|
17
17
|
export declare class IstanbulCoverageHandler extends BaseHandler {
|
|
18
18
|
private coverageMap;
|
|
19
19
|
constructor();
|
|
20
|
-
processFile(filePath: string,
|
|
20
|
+
processFile(filePath: string, _fileName: string, lines: Record<string, number>): void;
|
|
21
21
|
finalize(): IstanbulCoverageObject;
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"istanbulJson.js","sourceRoot":"","sources":["../../src/handlers/istanbulJson.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IAC9C,WAAW,GAAwB,EAAE,CAAC;IAE9C;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"istanbulJson.js","sourceRoot":"","sources":["../../src/handlers/istanbulJson.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IAC9C,WAAW,GAAwB,EAAE,CAAC;IAE9C;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,SAAiB,EAAE,KAA6B;QACnF,MAAM,YAAY,GAAgC,EAAE,CAAC;QACrD,MAAM,CAAC,GAA2B,EAAE,CAAC;QACrC,MAAM,YAAY,GAA2B,EAAE,CAAC;QAEhD,KAAK,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAChC,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YAChC,YAAY,CAAC,UAAU,CAAC,GAAG;gBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;aACzB,CAAC;YACF,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,MAAM,YAAY,GAAyB;YACzC,IAAI,EAAE,QAAQ;YACd,YAAY;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;YACb,CAAC;YACD,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,YAAY;SAChB,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;IAC5C,CAAC;IAEM,QAAQ;QACb,0DAA0D;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,SAAS,GAAwB,EAAE,CAAC;QAE1C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,6BAA6B;AAC7B,eAAe,CAAC,QAAQ,CAAC;IACvB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,uDAAuD;IACpE,aAAa,EAAE,OAAO;IACtB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,uBAAuB,EAAE;IAC5C,cAAc,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC;CAC1E,CAAC,CAAC"}
|
package/lib/handlers/jacoco.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare class JaCoCoCoverageHandler extends BaseHandler {
|
|
|
19
19
|
private readonly coverageObj;
|
|
20
20
|
private packageMap;
|
|
21
21
|
constructor();
|
|
22
|
-
processFile(filePath: string,
|
|
22
|
+
processFile(filePath: string, _fileName: string, lines: Record<string, number>): void;
|
|
23
23
|
finalize(): JaCoCoCoverageObject;
|
|
24
24
|
private getOrCreatePackage;
|
|
25
25
|
}
|
package/lib/handlers/jacoco.js
CHANGED
|
@@ -30,7 +30,7 @@ export class JaCoCoCoverageHandler extends BaseHandler {
|
|
|
30
30
|
};
|
|
31
31
|
this.packageMap = {}; // Stores packages by directory
|
|
32
32
|
}
|
|
33
|
-
processFile(filePath,
|
|
33
|
+
processFile(filePath, _fileName, lines) {
|
|
34
34
|
const pathParts = filePath.split('/');
|
|
35
35
|
const fileNamewithExt = pathParts.pop();
|
|
36
36
|
const packageName = pathParts.join('/');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jacoco.js","sourceRoot":"","sources":["../../src/handlers/jacoco.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACnC,WAAW,CAAuB;IAC3C,UAAU,CAAgC;IAElD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG;YACjB,MAAM,EAAE;gBACN,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,+BAA+B;IACvD,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"jacoco.js","sourceRoot":"","sources":["../../src/handlers/jacoco.ts"],"names":[],"mappings":"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"}
|
package/lib/handlers/lcov.d.ts
CHANGED
|
@@ -17,6 +17,6 @@ import { BaseHandler } from './BaseHandler.js';
|
|
|
17
17
|
export declare class LcovCoverageHandler extends BaseHandler {
|
|
18
18
|
private readonly coverageObj;
|
|
19
19
|
constructor();
|
|
20
|
-
processFile(filePath: string,
|
|
20
|
+
processFile(filePath: string, _fileName: string, lines: Record<string, number>): void;
|
|
21
21
|
finalize(): LcovCoverageObject;
|
|
22
22
|
}
|
package/lib/handlers/lcov.js
CHANGED
|
@@ -21,7 +21,7 @@ export class LcovCoverageHandler extends BaseHandler {
|
|
|
21
21
|
super();
|
|
22
22
|
this.coverageObj = { files: [] };
|
|
23
23
|
}
|
|
24
|
-
processFile(filePath,
|
|
24
|
+
processFile(filePath, _fileName, lines) {
|
|
25
25
|
const { totalLines, coveredLines } = this.calculateCoverage(lines);
|
|
26
26
|
const lcovFile = {
|
|
27
27
|
sourceFile: filePath,
|
|
@@ -38,9 +38,7 @@ export class LcovCoverageHandler extends BaseHandler {
|
|
|
38
38
|
this.coverageObj.files.push(lcovFile);
|
|
39
39
|
}
|
|
40
40
|
finalize() {
|
|
41
|
-
|
|
42
|
-
this.coverageObj.files.sort((a, b) => a.sourceFile.localeCompare(b.sourceFile));
|
|
43
|
-
}
|
|
41
|
+
this.coverageObj.files.sort((a, b) => a.sourceFile.localeCompare(b.sourceFile));
|
|
44
42
|
return this.coverageObj;
|
|
45
43
|
}
|
|
46
44
|
}
|
package/lib/handlers/lcov.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lcov.js","sourceRoot":"","sources":["../../src/handlers/lcov.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IACjC,WAAW,CAAqB;IAEjD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"lcov.js","sourceRoot":"","sources":["../../src/handlers/lcov.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IACjC,WAAW,CAAqB;IAEjD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IAEM,WAAW,CAAC,QAAgB,EAAE,SAAiB,EAAE,KAA6B;QACnF,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAa;YACzB,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,EAAE;YACT,UAAU;YACV,YAAY;SACb,CAAC;QAEF,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBAClB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;gBAC9B,QAAQ,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,6BAA6B;AAC7B,eAAe,CAAC,QAAQ,CAAC;IACvB,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,+CAA+C;IAC5D,aAAa,EAAE,OAAO;IACtB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE;IACxC,cAAc,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC;CAC3D,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { MarkdownCoverageObject } from '../utils/types.js';
|
|
2
|
+
import { BaseHandler } from './BaseHandler.js';
|
|
3
|
+
/**
|
|
4
|
+
* Handler for generating Markdown coverage summaries.
|
|
5
|
+
*
|
|
6
|
+
* Designed for pipeline PR / MR comments and job summary blocks
|
|
7
|
+
* (e.g. `$GITHUB_STEP_SUMMARY`, GitLab MR widgets, Bitbucket comments).
|
|
8
|
+
*
|
|
9
|
+
* The report includes:
|
|
10
|
+
* - An overall coverage summary block
|
|
11
|
+
* - A per-package-directory coverage table
|
|
12
|
+
* - A file coverage table sorted with the lowest coverage first
|
|
13
|
+
*
|
|
14
|
+
* Compatible with:
|
|
15
|
+
* - GitHub Actions (job summary, sticky PR comments)
|
|
16
|
+
* - GitLab CI (MR comments)
|
|
17
|
+
* - Bitbucket / Azure DevOps PR comments
|
|
18
|
+
* - Any tool that renders GitHub-flavored Markdown
|
|
19
|
+
*/
|
|
20
|
+
export declare class MarkdownCoverageHandler extends BaseHandler {
|
|
21
|
+
private readonly coverageObj;
|
|
22
|
+
private totalLinesAccumulator;
|
|
23
|
+
private coveredLinesAccumulator;
|
|
24
|
+
private readonly packageMap;
|
|
25
|
+
constructor();
|
|
26
|
+
processFile(filePath: string, _fileName: string, lines: Record<string, number>): void;
|
|
27
|
+
finalize(): MarkdownCoverageObject;
|
|
28
|
+
}
|