diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2021-06-22 01:45:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-22 01:45:41 +0200 |
commit | 9105892ec8b454571c56883eace557eee25b3301 (patch) | |
tree | 965d90e3a885c2f870f58eef921d8811a9a491b9 /cli | |
parent | a5eb2dfc93afc2899ed6e1ad2b3e029157889f7c (diff) |
refactor: unify JavaScript script execution method (#11043)
This commit renames "JsRuntime::execute" to "JsRuntime::execute_script". Additionally
same renames were applied to methods on "deno_runtime::Worker" and
"deno_runtime::WebWorker".
A new macro was added to "deno_core" called "located_script_name" which
returns the name of Rust file alongside line no and col no of that call site.
This macro is useful in combination with "JsRuntime::execute_script"
and allows to provide accurate place where "one-off" JavaScript scripts
are executed for internal runtime functions.
Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com>
Diffstat (limited to 'cli')
-rw-r--r-- | cli/build.rs | 2 | ||||
-rw-r--r-- | cli/lsp/tsc.rs | 5 | ||||
-rw-r--r-- | cli/main.rs | 41 | ||||
-rw-r--r-- | cli/standalone.rs | 11 | ||||
-rw-r--r-- | cli/tests/dont_panic_not_found_cwd.ts | 3 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 19 | ||||
-rw-r--r-- | cli/tools/test_runner.rs | 11 | ||||
-rw-r--r-- | cli/tsc.rs | 7 |
8 files changed, 59 insertions, 40 deletions
diff --git a/cli/build.rs b/cli/build.rs index 8e15ef443..5e872ab2c 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -29,7 +29,7 @@ fn create_snapshot( let display_path = file.strip_prefix(display_root).unwrap(); let display_path_str = display_path.display().to_string(); js_runtime - .execute( + .execute_script( &("deno:".to_string() + &display_path_str.replace('\\', "/")), &std::fs::read_to_string(&file).unwrap(), ) diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index 83958fde2..ec2276cb4 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -20,6 +20,7 @@ use crate::tsc::ResolveArgs; use deno_core::error::anyhow; use deno_core::error::custom_error; use deno_core::error::AnyError; +use deno_core::located_script_name; use deno_core::op_sync; use deno_core::resolve_url; use deno_core::serde::de; @@ -2264,7 +2265,7 @@ fn start( let init_config = json!({ "debug": debug, "rootUri": root_uri }); let init_src = format!("globalThis.serverInit({});", init_config); - runtime.execute("[native code]", &init_src) + runtime.execute_script(&located_script_name!(), &init_src) } #[derive(Debug, Serialize)] @@ -2649,7 +2650,7 @@ pub fn request( }; let mark = performance.mark("request", Some(request_params.clone())); let request_src = format!("globalThis.serverRequest({});", request_params); - runtime.execute("[native_code]", &request_src)?; + runtime.execute_script(&located_script_name!(), &request_src)?; let op_state = runtime.op_state(); let mut op_state = op_state.borrow_mut(); diff --git a/cli/main.rs b/cli/main.rs index 20f9131bf..2586e9b60 100644 --- a/cli/main.rs +++ b/cli/main.rs @@ -55,6 +55,7 @@ use deno_core::error::generic_error; use deno_core::error::AnyError; use deno_core::futures::future::FutureExt; use deno_core::futures::Future; +use deno_core::located_script_name; use deno_core::resolve_url_or_path; use deno_core::serde_json; use deno_core::serde_json::json; @@ -554,9 +555,15 @@ async fn eval_command( program_state.file_fetcher.insert_cached(file); debug!("main_module {}", &main_module); worker.execute_module(&main_module).await?; - worker.execute("window.dispatchEvent(new Event('load'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('load'))", + )?; worker.run_event_loop(false).await?; - worker.execute("window.dispatchEvent(new Event('unload'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('unload'))", + )?; Ok(()) } @@ -794,9 +801,15 @@ async fn run_from_stdin(flags: Flags) -> Result<(), AnyError> { debug!("main_module {}", main_module); worker.execute_module(&main_module).await?; - worker.execute("window.dispatchEvent(new Event('load'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('load'))", + )?; worker.run_event_loop(false).await?; - worker.execute("window.dispatchEvent(new Event('unload'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('unload'))", + )?; Ok(()) } @@ -866,9 +879,15 @@ async fn run_with_watch(flags: Flags, script: String) -> Result<(), AnyError> { ); debug!("main_module {}", main_module); worker.execute_module(&main_module).await?; - worker.execute("window.dispatchEvent(new Event('load'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('load'))", + )?; worker.run_event_loop(false).await?; - worker.execute("window.dispatchEvent(new Event('unload'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('unload'))", + )?; Ok(()) } }; @@ -909,11 +928,17 @@ async fn run_command(flags: Flags, script: String) -> Result<(), AnyError> { debug!("main_module {}", main_module); worker.execute_module(&main_module).await?; - worker.execute("window.dispatchEvent(new Event('load'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('load'))", + )?; worker .run_event_loop(maybe_coverage_collector.is_none()) .await?; - worker.execute("window.dispatchEvent(new Event('unload'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('unload'))", + )?; if let Some(coverage_collector) = maybe_coverage_collector.as_mut() { worker diff --git a/cli/standalone.rs b/cli/standalone.rs index 796211198..fa8c5a7ee 100644 --- a/cli/standalone.rs +++ b/cli/standalone.rs @@ -13,6 +13,7 @@ use deno_core::error::uri_error; use deno_core::error::AnyError; use deno_core::error::Context; use deno_core::futures::FutureExt; +use deno_core::located_script_name; use deno_core::resolve_url; use deno_core::serde::Deserialize; use deno_core::serde::Serialize; @@ -262,9 +263,15 @@ pub async fn run( } worker.bootstrap(&options); worker.execute_module(&main_module).await?; - worker.execute("window.dispatchEvent(new Event('load'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('load'))", + )?; worker.run_event_loop(true).await?; - worker.execute("window.dispatchEvent(new Event('unload'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('unload'))", + )?; std::process::exit(0); } diff --git a/cli/tests/dont_panic_not_found_cwd.ts b/cli/tests/dont_panic_not_found_cwd.ts deleted file mode 100644 index e5ae1dfa4..000000000 --- a/cli/tests/dont_panic_not_found_cwd.ts +++ /dev/null @@ -1,3 +0,0 @@ -const dir = Deno.makeTempDirSync(); -Deno.chdir(dir); -Deno.removeSync(dir); diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index af3c9167c..2cad5a44c 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -5635,25 +5635,6 @@ console.log("finish"); assert!(stderr.contains("BadResource")); } - #[cfg(not(windows))] - #[test] - fn should_not_panic_on_not_found_cwd() { - let output = util::deno_cmd() - .current_dir(util::root_path()) - .arg("run") - .arg("--allow-write") - .arg("--allow-read") - .arg("cli/tests/dont_panic_not_found_cwd.ts") - .stderr(std::process::Stdio::piped()) - .spawn() - .unwrap() - .wait_with_output() - .unwrap(); - assert!(!output.status.success()); - let stderr = std::str::from_utf8(&output.stderr).unwrap().trim(); - assert!(stderr.contains("Failed to get current working directory")); - } - #[cfg(windows)] // Clippy suggests to remove the `NoStd` prefix from all variants. I disagree. #[allow(clippy::enum_variant_names)] diff --git a/cli/tools/test_runner.rs b/cli/tools/test_runner.rs index 24bea3ff8..96b101fa3 100644 --- a/cli/tools/test_runner.rs +++ b/cli/tools/test_runner.rs @@ -16,6 +16,7 @@ use deno_core::futures::future; use deno_core::futures::stream; use deno_core::futures::FutureExt; use deno_core::futures::StreamExt; +use deno_core::located_script_name; use deno_core::serde_json::json; use deno_core::url::Url; use deno_core::ModuleSpecifier; @@ -302,7 +303,10 @@ pub async fn run_test_file( let execute_result = worker.execute_module(&main_module).await; execute_result?; - worker.execute("window.dispatchEvent(new Event('load'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('load'))", + )?; let execute_result = worker.execute_module(&test_module).await; execute_result?; @@ -310,7 +314,10 @@ pub async fn run_test_file( worker .run_event_loop(maybe_coverage_collector.is_none()) .await?; - worker.execute("window.dispatchEvent(new Event('unload'))")?; + worker.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('unload'))", + )?; if let Some(coverage_collector) = maybe_coverage_collector.as_mut() { worker diff --git a/cli/tsc.rs b/cli/tsc.rs index bfd5e8dbe..3e7974a97 100644 --- a/cli/tsc.rs +++ b/cli/tsc.rs @@ -10,6 +10,7 @@ use deno_core::error::anyhow; use deno_core::error::bail; use deno_core::error::AnyError; use deno_core::error::Context; +use deno_core::located_script_name; use deno_core::op_sync; use deno_core::resolve_url_or_path; use deno_core::serde::de; @@ -556,9 +557,9 @@ pub fn exec(request: Request) -> Result<Response, AnyError> { let exec_source = format!("globalThis.exec({})", request_str); runtime - .execute("[native code]", startup_source) + .execute_script(&located_script_name!(), startup_source) .context("Could not properly start the compiler runtime.")?; - runtime.execute("[native_code]", &exec_source)?; + runtime.execute_script(&located_script_name!(), &exec_source)?; let op_state = runtime.op_state(); let mut op_state = op_state.borrow_mut(); @@ -672,7 +673,7 @@ mod tests { ..Default::default() }); js_runtime - .execute( + .execute_script( "<anon>", r#" if (!(startup)) { |