1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-26 17:19:06 -05:00

feat(unstable): collect coverage from the run command (#8893)

This adds implicit coverage collection to the run command 
when a coverage collection directory is set (via an environment 
variable).
This commit is contained in:
Casper Beyer 2020-12-28 23:51:26 +08:00 committed by GitHub
parent c98c487fda
commit 091059450e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 70 additions and 0 deletions

View file

@ -948,11 +948,31 @@ async fn run_command(flags: Flags, script: String) -> Result<(), AnyError> {
let permissions = Permissions::from_options(&flags.clone().into());
let mut worker =
create_main_worker(&program_state, main_module.clone(), permissions);
let mut maybe_coverage_collector =
if let Some(ref coverage_dir) = program_state.coverage_dir {
let session = worker.create_inspector_session();
let coverage_dir = PathBuf::from(coverage_dir);
let mut coverage_collector =
tools::coverage::CoverageCollector::new(coverage_dir, session);
coverage_collector.start_collecting().await?;
Some(coverage_collector)
} else {
None
};
debug!("main_module {}", main_module);
worker.execute_module(&main_module).await?;
worker.execute("window.dispatchEvent(new Event('load'))")?;
worker.run_event_loop().await?;
worker.execute("window.dispatchEvent(new Event('unload'))")?;
if let Some(coverage_collector) = maybe_coverage_collector.as_mut() {
coverage_collector.stop_collecting().await?;
}
Ok(())
}

View file

@ -3322,6 +3322,12 @@ itest!(deno_test_run_test_coverage {
exit_code: 0,
});
itest!(deno_test_run_run_coverage {
args: "test --allow-all --coverage --unstable test_run_run_coverage.ts",
output: "test_run_run_coverage.out",
exit_code: 0,
});
itest!(deno_lint {
args: "lint --unstable lint/file1.js lint/file2.ts lint/ignored_file.ts",
output: "lint/expected.out",

View file

@ -0,0 +1,3 @@
import { returnsFoo2 } from "./subdir/mod1.ts";
returnsFoo2();

View file

@ -0,0 +1,27 @@
Check [WILDCARD]/$deno$test.ts
running 1 tests
test spawn test ... Check [WILDCARD]/run_coverage.ts
ok ([WILDCARD])
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out ([WILDCARD])
cover [WILDCARD]/tests/run_coverage.ts ... 100.000% (3/3)
cover [WILDCARD]/tests/subdir/mod1.ts ... 35.714% (5/14)
2 | export function returnsHi() {
3 | return "Hi";
4 | }
-----|-----
8 | export function printHello3() {
9 | printHello2();
10 | }
11 | export function throwsError() {
12 | throw Error("exception from mod1");
13 | }
cover [WILDCARD]/tests/subdir/print_hello.ts ... 25.000% (1/4)
1 | export function printHello() {
2 | console.log("Hello");
3 | }
cover [WILDCARD]/tests/subdir/subdir2/mod2.ts ... 62.500% (5/8)
5 | export function printHello2() {
6 | printHello();
7 | }

View file

@ -0,0 +1,14 @@
Deno.test("spawn test", async function () {
const process = Deno.run({
cmd: [
Deno.execPath(),
"run",
"--allow-all",
"--unstable",
"run_coverage.ts",
],
});
await process.status();
process.close();
});