feat(test): create coverage reports when --coverage specified in deno test (#28260)

This PR updates the behavior of `deno test --coverage` option. Now if
`--coverage` option is specified, `deno test` command automatically
shows summary report in the terminal, and generates the lcov report in
`$coverage_dir/lcov.info` and html report in `$coverage_dir/html/`

This change also adds `--coverage-raw-data-only` flag, which prevents
the above reports generated, instead only generates the raw json
coverage data (which is the same as current behavior)
This commit is contained in:
Yoshiya Hinosawa 2025-04-18 18:56:14 +09:00 committed by GitHub
parent 0bb16651c0
commit 83f15ece09
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 203 additions and 36 deletions

View file

@ -0,0 +1,20 @@
{
"tempDir": true,
"steps": [
{
"args": "test --coverage --doc",
"output": "main.out",
"exitCode": 0
},
{
"args": "run -A cat.ts coverage/lcov.info",
"output": "lcov_info.out",
"exitCode": 0
},
{
"args": "run -A cat.ts coverage/html/index.html",
"output": "html_index_html.out",
"exitCode": 0
}
]
}

View file

@ -0,0 +1 @@
console.log(await Deno.readTextFile(Deno.args[0]));

View file

@ -0,0 +1,2 @@
<!doctype html>
<html>[WILDCARD]</html>

View file

@ -0,0 +1,4 @@
SF:[WILDCARD]source.ts
[WILDCARD]
end_of_record

View file

@ -0,0 +1,18 @@
Check [WILDCARD]/test.ts
Check [WILDCARD]/source.ts$[WILDCARD].ts
running 1 test from ./test.ts
add() ... ok ([WILDCARD])
running 1 test from ./source.ts$[WILDCARD].ts
file:///[WILDCARD]/source.ts$[WILDCARD].ts ... ok ([WILDCARD])
ok | 2 passed | 0 failed ([WILDCARD])
--------------------------------
File | Branch % | Line % |
--------------------------------
source.ts | 100.0 | 100.0 |
--------------------------------
All files | 100.0 | 100.0 |
--------------------------------
Lcov coverage report has been generated at file://[WILDCARD]/coverage/lcov.info
HTML coverage report has been generated at file://[WILDCARD]/coverage/html/index.html

View file

@ -0,0 +1,9 @@
/**
* @example Usage
* ```ts
* add(1, 2); // 3
* ```
*/
export function add(a: number, b: number): number {
return a + b;
}

View file

@ -0,0 +1,7 @@
import { add } from "./source.ts";
Deno.test("add()", () => {
if (add(1, 2) !== 3) {
throw new Error("test failed");
}
});