From 5b2caed7fd928fa80e31be47edf0bd73a1b2c1cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Mon, 18 Dec 2023 11:43:27 +0100 Subject: 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 --- cli/tests/integration/coverage_tests.rs | 6 ++++++ cli/tests/testdata/coverage/doesnt_exist.out | 1 + cli/tools/coverage/mod.rs | 4 +++- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 cli/tests/testdata/coverage/doesnt_exist.out (limited to 'cli') 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, -- cgit v1.2.3