diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2020-11-22 13:06:51 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-22 14:06:51 +0100 |
commit | 14877f7fe21573e1ed0ce696a107543bbba995b2 (patch) | |
tree | af260fdab14b2afac2400341c536ea7d2dca0570 /cli/main.rs | |
parent | 686a17fc075ead774f5b692329d11e72139e3f02 (diff) |
feat(unstable): Add deno test --no-run (#8093)
This commit adds new flag to "deno test" subcommand
called "--no-run" that allows to preload, cache an type
check.
Diffstat (limited to 'cli/main.rs')
-rw-r--r-- | cli/main.rs | 58 |
1 files changed, 37 insertions, 21 deletions
diff --git a/cli/main.rs b/cli/main.rs index 160b98674..e351060f1 100644 --- a/cli/main.rs +++ b/cli/main.rs @@ -60,7 +60,6 @@ use deno_core::futures::future::FutureExt; use deno_core::futures::Future; use deno_core::serde_json; use deno_core::serde_json::json; -use deno_core::url::Url; use deno_core::v8_set_flags; use deno_core::ModuleSpecifier; use deno_doc as doc; @@ -625,6 +624,7 @@ async fn run_command(flags: Flags, script: String) -> Result<(), AnyError> { async fn test_command( flags: Flags, include: Option<Vec<String>>, + no_run: bool, fail_fast: bool, quiet: bool, allow_none: bool, @@ -644,32 +644,45 @@ async fn test_command( } return Ok(()); } - - let test_file_path = cwd.join("$deno$test.ts"); - let test_file_url = - Url::from_file_path(&test_file_path).expect("Should be valid file url"); - let test_file = tools::test_runner::render_test_file( - test_modules.clone(), - fail_fast, - quiet, - filter, - ); - let main_module = - ModuleSpecifier::resolve_url(&test_file_url.to_string()).unwrap(); - let mut worker = - MainWorker::new(&program_state, main_module.clone(), permissions); + let main_module = ModuleSpecifier::resolve_path("$deno$test.ts")?; // Create a dummy source file. let source_file = File { - local: test_file_url.to_file_path().unwrap(), + local: main_module.as_url().to_file_path().unwrap(), maybe_types: None, media_type: MediaType::TypeScript, - source: test_file.clone(), - specifier: ModuleSpecifier::from(test_file_url.clone()), + source: tools::test_runner::render_test_file( + test_modules.clone(), + fail_fast, + quiet, + filter, + ), + specifier: main_module.clone(), }; // Save our fake file into file fetcher cache // to allow module access by TS compiler program_state.file_fetcher.insert_cached(source_file); + if no_run { + let lib = if flags.unstable { + module_graph::TypeLib::UnstableDenoWindow + } else { + module_graph::TypeLib::DenoWindow + }; + program_state + .prepare_module_load( + main_module.clone(), + lib, + Permissions::allow_all(), + false, + program_state.maybe_import_map.clone(), + ) + .await?; + return Ok(()); + } + + let mut worker = + MainWorker::new(&program_state, main_module.clone(), permissions); + let mut maybe_coverage_collector = if flags.coverage { let session = worker.create_inspector_session(); let mut coverage_collector = @@ -694,7 +707,7 @@ async fn test_command( let filtered_coverages = tools::coverage::filter_script_coverages( coverages, - test_file_url, + main_module.as_url().clone(), test_modules, ); @@ -815,13 +828,16 @@ pub fn main() { DenoSubcommand::Repl => run_repl(flags).boxed_local(), DenoSubcommand::Run { script } => run_command(flags, script).boxed_local(), DenoSubcommand::Test { + no_run, fail_fast, quiet, include, allow_none, filter, - } => test_command(flags, include, fail_fast, quiet, allow_none, filter) - .boxed_local(), + } => { + test_command(flags, include, no_run, fail_fast, quiet, allow_none, filter) + .boxed_local() + } DenoSubcommand::Completions { buf } => { if let Err(e) = write_to_stdout_ignore_sigpipe(&buf) { eprintln!("{}", e); |