diff options
author | Yoshiya Hinosawa <stibium121@gmail.com> | 2024-05-28 12:37:30 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-28 12:37:30 +0900 |
commit | d99c6c1ea4f5711c3f48c5617d7224852fb294d2 (patch) | |
tree | 2d333b2d4636539d52c85245b68df5455a09a355 /cli/tools/coverage | |
parent | c4211e2ffceaa01ebeeab0a3b16809dd8e08667b (diff) |
fix(coverage): handle ignore patterns (#23974)
closes #23972
Diffstat (limited to 'cli/tools/coverage')
-rw-r--r-- | cli/tools/coverage/mod.rs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/cli/tools/coverage/mod.rs b/cli/tools/coverage/mod.rs index 47841b037..e1c5d9eb4 100644 --- a/cli/tools/coverage/mod.rs +++ b/cli/tools/coverage/mod.rs @@ -397,11 +397,7 @@ fn collect_coverages( )? } }), - exclude: PathOrPatternSet::from_exclude_relative_path_or_patterns( - initial_cwd, - &files.ignore, - ) - .context("Invalid ignore pattern.")?, + exclude: PathOrPatternSet::new(vec![]), }; let file_paths = FileCollector::new(|e| { e.path.extension().map(|ext| ext == "json").unwrap_or(false) @@ -411,12 +407,28 @@ fn collect_coverages( .set_vendor_folder(cli_options.vendor_dir_path().map(ToOwned::to_owned)) .collect_file_patterns(file_patterns)?; + let coverage_patterns = FilePatterns { + base: initial_cwd.to_path_buf(), + include: None, + exclude: PathOrPatternSet::from_exclude_relative_path_or_patterns( + initial_cwd, + &files.ignore, + ) + .context("Invalid ignore pattern.")?, + }; + for file_path in file_paths { let new_coverage = fs::read_to_string(file_path.as_path()) .map_err(AnyError::from) - .and_then(|json| serde_json::from_str(&json).map_err(AnyError::from)) + .and_then(|json| { + serde_json::from_str::<cdp::ScriptCoverage>(&json) + .map_err(AnyError::from) + }) .with_context(|| format!("Failed reading '{}'", file_path.display()))?; - coverages.push(new_coverage); + let url = Url::parse(&new_coverage.url)?; + if coverage_patterns.matches_specifier(&url) { + coverages.push(new_coverage); + } } coverages.sort_by_key(|k| k.url.clone()); |