summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-12-18 11:43:27 +0100
committerGitHub <noreply@github.com>2023-12-18 11:43:27 +0100
commit5b2caed7fd928fa80e31be47edf0bd73a1b2c1cc (patch)
treeb2852318f035acec936ad3e866ec16153a9cad43
parenta44a5de43013becb91e4725e508051e62f628467 (diff)
fix(coverage): error if no files found (#21615)
This commit fixes a panic in `deno coverage` command if the file to be covered doesn't produce any coverage data. Fixes https://github.com/denoland/deno/issues/21580
-rw-r--r--cli/tests/integration/coverage_tests.rs6
-rw-r--r--cli/tests/testdata/coverage/doesnt_exist.out1
-rw-r--r--cli/tools/coverage/mod.rs4
3 files changed, 10 insertions, 1 deletions
diff --git a/cli/tests/integration/coverage_tests.rs b/cli/tests/integration/coverage_tests.rs
index 4c7a51f4e..497d67890 100644
--- a/cli/tests/integration/coverage_tests.rs
+++ b/cli/tests/integration/coverage_tests.rs
@@ -630,3 +630,9 @@ File | Branch % | Line % |
",
);
}
+
+itest!(no_files_found {
+ args: "coverage doesnt_exist.js",
+ exit_code: 1,
+ output: "coverage/doesnt_exist.out",
+});
diff --git a/cli/tests/testdata/coverage/doesnt_exist.out b/cli/tests/testdata/coverage/doesnt_exist.out
new file mode 100644
index 000000000..0b679bcb4
--- /dev/null
+++ b/cli/tests/testdata/coverage/doesnt_exist.out
@@ -0,0 +1 @@
+error: No coverage files found
diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs
index 28ecc100e..d951d5d5c 100644
--- a/cli/tools/coverage/mod.rs
+++ b/cli/tools/coverage/mod.rs
@@ -453,8 +453,10 @@ pub async fn cover_files(
// Use the first include path as the default output path.
let coverage_root = coverage_flags.files.include[0].clone();
-
let script_coverages = collect_coverages(coverage_flags.files)?;
+ if script_coverages.is_empty() {
+ return Err(generic_error("No coverage files found"));
+ }
let script_coverages = filter_coverages(
script_coverages,
coverage_flags.include,