From 1af0cdee0ad0833c3dd1f35a790408cb0c02df2c Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Tue, 10 Dec 2024 09:31:52 +0000 Subject: [PATCH] use single workspace dir for test -c and bench -c --- cli/args/flags.rs | 8 +++++++ cli/args/mod.rs | 4 ++++ cli/tools/bench/mod.rs | 20 ++++++++++++----- cli/tools/check.rs | 8 +------ cli/tools/test/mod.rs | 50 +++++++++++++++++++++++++++--------------- 5 files changed, 60 insertions(+), 30 deletions(-) diff --git a/cli/args/flags.rs b/cli/args/flags.rs index cdeaa1b335..1f07392e37 100644 --- a/cli/args/flags.rs +++ b/cli/args/flags.rs @@ -1172,6 +1172,14 @@ impl Flags { Ok(PathOrPatternSet::default()) } } + + pub fn is_discovered_config(&self) -> bool { + match self.config_flag { + ConfigFlag::Discover => true, + ConfigFlag::Path(_) => false, + ConfigFlag::Disabled => false, + } + } } static ENV_VARIABLES_HELP: &str = cstr!( diff --git a/cli/args/mod.rs b/cli/args/mod.rs index f78cd4edc6..5e0dc0ba09 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -1011,6 +1011,10 @@ impl CliOptions { } } + pub fn is_discovered_config(&self) -> bool { + self.flags.is_discovered_config() + } + pub fn npm_system_info(&self) -> NpmSystemInfo { match self.sub_command() { DenoSubcommand::Compile(CompileFlags { diff --git a/cli/tools/bench/mod.rs b/cli/tools/bench/mod.rs index b62a6330df..a47d0de55f 100644 --- a/cli/tools/bench/mod.rs +++ b/cli/tools/bench/mod.rs @@ -1,6 +1,7 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. use crate::args::BenchFlags; +use crate::args::BenchOptions; use crate::args::Flags; use crate::colors; use crate::display::write_json_to_stdout; @@ -552,11 +553,20 @@ pub async fn run_benchmarks( )?; let log_level = cli_options.log_level(); - let workspace_dirs_with_files = cli_options - .resolve_bench_options_for_members(&bench_flags)? - .into_iter() - .map(|(d, o)| (Arc::new(d), o.files)) - .collect(); + let workspace_dirs_with_files = if cli_options.is_discovered_config() { + cli_options + .resolve_bench_options_for_members(&bench_flags)? + .into_iter() + .map(|(d, o)| (Arc::new(d), o.files)) + .collect() + } else { + let patterns = bench_flags + .files + .as_file_patterns(cli_options.initial_cwd())?; + let config = cli_options.start_dir.to_bench_config(patterns)?; + let options = BenchOptions::resolve(config, &bench_flags); + vec![(cli_options.start_dir.clone(), options.files)] + }; let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files( workspace_dirs_with_files, &factory, diff --git a/cli/tools/check.rs b/cli/tools/check.rs index a52d717fb9..52bd844ccc 100644 --- a/cli/tools/check.rs +++ b/cli/tools/check.rs @@ -20,7 +20,6 @@ use regex::Regex; use crate::args::check_warn_tsconfig; use crate::args::CheckFlags; use crate::args::CliOptions; -use crate::args::ConfigFlag; use crate::args::FileFlags; use crate::args::Flags; use crate::args::TsConfig; @@ -49,14 +48,9 @@ pub async fn check( flags: Arc, check_flags: CheckFlags, ) -> Result<(), AnyError> { - let is_discovered_config = match flags.config_flag { - ConfigFlag::Discover => true, - ConfigFlag::Path(_) => false, - ConfigFlag::Disabled => false, - }; let factory = CliFactory::from_flags(flags); let cli_options = factory.cli_options()?; - let workspace_dirs_with_files = if is_discovered_config { + let workspace_dirs_with_files = if cli_options.is_discovered_config() { cli_options .resolve_file_flags_for_members(&FileFlags { ignore: Default::default(), diff --git a/cli/tools/test/mod.rs b/cli/tools/test/mod.rs index a8b20f709d..0b873476d8 100644 --- a/cli/tools/test/mod.rs +++ b/cli/tools/test/mod.rs @@ -3,6 +3,7 @@ use crate::args::CliOptions; use crate::args::Flags; use crate::args::TestFlags; +use crate::args::TestOptions; use crate::args::TestReporterConfig; use crate::colors; use crate::display; @@ -1499,11 +1500,20 @@ pub async fn run_tests( )?; let log_level = cli_options.log_level(); - let workspace_dirs_with_files = cli_options - .resolve_test_options_for_members(&test_flags)? - .into_iter() - .map(|(d, o)| (Arc::new(d), o.files)) - .collect(); + let workspace_dirs_with_files = if cli_options.is_discovered_config() { + cli_options + .resolve_test_options_for_members(&test_flags)? + .into_iter() + .map(|(d, o)| (Arc::new(d), o.files)) + .collect() + } else { + let patterns = test_flags + .files + .as_file_patterns(cli_options.initial_cwd())?; + let config = cli_options.start_dir.to_test_config(patterns)?; + let options = TestOptions::resolve(config, &test_flags); + vec![(cli_options.start_dir.clone(), options.files)] + }; let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files( workspace_dirs_with_files, &factory, @@ -1605,24 +1615,28 @@ pub async fn run_tests_with_watch( )?; let log_level = cli_options.log_level(); - let members_with_test_options = - cli_options.resolve_test_options_for_members(&test_flags)?; - let watch_paths = members_with_test_options + let workspace_dirs_with_files = if cli_options.is_discovered_config() { + cli_options + .resolve_test_options_for_members(&test_flags)? + .into_iter() + .map(|(d, o)| (Arc::new(d), o.files)) + .collect() + } else { + let patterns = test_flags + .files + .as_file_patterns(cli_options.initial_cwd())?; + let config = cli_options.start_dir.to_test_config(patterns)?; + let options = TestOptions::resolve(config, &test_flags); + vec![(cli_options.start_dir.clone(), options.files)] + }; + let watch_paths = workspace_dirs_with_files .iter() - .filter_map(|(_, test_options)| { - test_options - .files - .include - .as_ref() - .map(|set| set.base_paths()) + .filter_map(|(_, files)| { + files.include.as_ref().map(|set| set.base_paths()) }) .flatten() .collect::>(); let _ = watcher_communicator.watch_paths(watch_paths); - let workspace_dirs_with_files = members_with_test_options - .into_iter() - .map(|(d, o)| (Arc::new(d), o.files)) - .collect(); let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files( workspace_dirs_with_files,