diff options
-rw-r--r-- | cli/npm/resolvers/mod.rs | 4 | ||||
-rw-r--r-- | cli/tests/integration/coverage_tests.rs | 48 | ||||
-rw-r--r-- | cli/tests/testdata/coverage/no_npm_coverage/expected.out | 1 | ||||
-rw-r--r-- | cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts | 4 | ||||
-rw-r--r-- | cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts | 4 | ||||
-rw-r--r-- | cli/tools/coverage/mod.rs | 4 |
6 files changed, 65 insertions, 0 deletions
diff --git a/cli/npm/resolvers/mod.rs b/cli/npm/resolvers/mod.rs index 61b020885..c8ac6f44a 100644 --- a/cli/npm/resolvers/mod.rs +++ b/cli/npm/resolvers/mod.rs @@ -74,6 +74,10 @@ impl NpmPackageResolver { } } + pub fn root_dir_url(&self) -> &Url { + self.fs_resolver.root_dir_url() + } + pub fn resolve_pkg_id_from_pkg_req( &self, req: &NpmPackageReq, diff --git a/cli/tests/integration/coverage_tests.rs b/cli/tests/integration/coverage_tests.rs index 022f216d8..440d6b17e 100644 --- a/cli/tests/integration/coverage_tests.rs +++ b/cli/tests/integration/coverage_tests.rs @@ -278,6 +278,54 @@ fn no_snaps_included(test_name: &str, extension: &str) { } #[test] +fn no_npm_cache_coverage() { + let context = TestContext::default(); + let tempdir = context.deno_dir(); + let tempdir = tempdir.path().join("cov"); + + let output = context + .new_command() + .args_vec(vec![ + "test".to_string(), + "--quiet".to_string(), + "--allow-read".to_string(), + format!("--coverage={}", tempdir.to_str().unwrap()), + format!("coverage/no_npm_coverage/no_npm_coverage_test.ts"), + ]) + .run(); + + output.assert_exit_code(0); + output.skip_output_check(); + + let output = context + .new_command() + .args_vec(vec![ + "coverage".to_string(), + format!("{}/", tempdir.to_str().unwrap()), + ]) + .split_output() + .run(); + + // Verify there's no "Check" being printed + assert!(output.stderr().is_empty()); + + let actual = util::strip_ansi_codes(output.stdout()).to_string(); + + let expected = fs::read_to_string( + util::testdata_path().join("coverage/no_npm_coverage/expected.out"), + ) + .unwrap(); + + if !util::wildcard_match(&expected, &actual) { + println!("OUTPUT\n{actual}\nOUTPUT"); + println!("EXPECTED\n{expected}\nEXPECTED"); + panic!("pattern match failed"); + } + + output.assert_exit_code(0); +} + +#[test] fn no_transpiled_lines() { let context = TestContext::default(); let tempdir = context.deno_dir(); diff --git a/cli/tests/testdata/coverage/no_npm_coverage/expected.out b/cli/tests/testdata/coverage/no_npm_coverage/expected.out new file mode 100644 index 000000000..ca4511277 --- /dev/null +++ b/cli/tests/testdata/coverage/no_npm_coverage/expected.out @@ -0,0 +1 @@ +cover [WILDCARD]/no_npm_coverage/no_npm_coverage.ts ... 100.000% (4/4) diff --git a/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts b/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts new file mode 100644 index 000000000..4233b2e5d --- /dev/null +++ b/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage.ts @@ -0,0 +1,4 @@ +import chalk from "npm:chalk"; +export function main() { + console.log(chalk.red("RED")); +} diff --git a/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts b/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts new file mode 100644 index 000000000..8305f9597 --- /dev/null +++ b/cli/tests/testdata/coverage/no_npm_coverage/no_npm_coverage_test.ts @@ -0,0 +1,4 @@ +import { main } from "./no_npm_coverage.ts"; +Deno.test("main", () => { + main(); +}); diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs index 9fead6e37..2346b3614 100644 --- a/cli/tools/coverage/mod.rs +++ b/cli/tools/coverage/mod.rs @@ -588,6 +588,7 @@ fn filter_coverages( coverages: Vec<ScriptCoverage>, include: Vec<String>, exclude: Vec<String>, + npm_root_dir: &str, ) -> Vec<ScriptCoverage> { let include: Vec<Regex> = include.iter().map(|e| Regex::new(e).unwrap()).collect(); @@ -599,6 +600,7 @@ fn filter_coverages( .into_iter() .filter(|e| { let is_internal = e.url.starts_with("ext:") + || e.url.starts_with(npm_root_dir) || e.url.ends_with("__anonymous__") || e.url.ends_with("$deno$test.js") || e.url.ends_with(".snap"); @@ -620,12 +622,14 @@ pub async fn cover_files( } let ps = ProcState::build(flags).await?; + let root_dir_url = ps.npm_resolver.root_dir_url(); let script_coverages = collect_coverages(coverage_flags.files)?; let script_coverages = filter_coverages( script_coverages, coverage_flags.include, coverage_flags.exclude, + root_dir_url.as_str(), ); let proc_coverages: Vec<_> = script_coverages |