diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs index 18750f72bd..32bed80c89 100644 --- a/cli/tools/coverage/mod.rs +++ b/cli/tools/coverage/mod.rs @@ -740,6 +740,12 @@ pub fn cover_files( } } + // All covered files, might have had ignore directive and we can end up + // with no reports at this point. + if file_reports.is_empty() { + return Err(anyhow!("No covered files included in the report")); + } + for reporter in reporters { reporter.done(&coverage_root, &file_reports); } diff --git a/cli/tools/coverage/reporter.rs b/cli/tools/coverage/reporter.rs index 0bb1de410c..1b1e637af3 100644 --- a/cli/tools/coverage/reporter.rs +++ b/cli/tools/coverage/reporter.rs @@ -18,7 +18,7 @@ use super::CoverageReport; use crate::args::CoverageType; use crate::colors; -#[derive(Default)] +#[derive(Default, Debug)] pub struct CoverageStats<'a> { pub line_hit: usize, pub line_miss: usize, diff --git a/tests/specs/coverage/all_files_with_ignore_directives/__test__.jsonc b/tests/specs/coverage/all_files_with_ignore_directives/__test__.jsonc new file mode 100644 index 0000000000..17a600d741 --- /dev/null +++ b/tests/specs/coverage/all_files_with_ignore_directives/__test__.jsonc @@ -0,0 +1,6 @@ +{ + "tempDir": true, + "args": "test --coverage test.ts", + "output": "test_coverage.out", + "exitCode": 0 +} diff --git a/tests/specs/coverage/all_files_with_ignore_directives/lib.ts b/tests/specs/coverage/all_files_with_ignore_directives/lib.ts new file mode 100644 index 0000000000..5089d12aa2 --- /dev/null +++ b/tests/specs/coverage/all_files_with_ignore_directives/lib.ts @@ -0,0 +1,5 @@ +// deno-coverage-ignore-file + +export function foo() { + return "foo"; +} diff --git a/tests/specs/coverage/all_files_with_ignore_directives/test.ts b/tests/specs/coverage/all_files_with_ignore_directives/test.ts new file mode 100644 index 0000000000..6baa40e067 --- /dev/null +++ b/tests/specs/coverage/all_files_with_ignore_directives/test.ts @@ -0,0 +1,5 @@ +import { foo } from "./lib.ts"; + +Deno.test("test", () => { + foo(); +}); diff --git a/tests/specs/coverage/all_files_with_ignore_directives/test_coverage.out b/tests/specs/coverage/all_files_with_ignore_directives/test_coverage.out new file mode 100644 index 0000000000..df551e7099 --- /dev/null +++ b/tests/specs/coverage/all_files_with_ignore_directives/test_coverage.out @@ -0,0 +1,7 @@ +Check [WILDCARD]/test.ts +running 1 test from ./test.ts +test ... ok ([WILDCARD]) + +ok | 1 passed | 0 failed ([WILDCARD]) + +Error generating coverage report: No covered files included in the report