summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2021-06-22 01:45:41 +0200
committerGitHub <noreply@github.com>2021-06-22 01:45:41 +0200
commit9105892ec8b454571c56883eace557eee25b3301 (patch)
tree965d90e3a885c2f870f58eef921d8811a9a491b9 /cli
parenta5eb2dfc93afc2899ed6e1ad2b3e029157889f7c (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.rs2
-rw-r--r--cli/lsp/tsc.rs5
-rw-r--r--cli/main.rs41
-rw-r--r--cli/standalone.rs11
-rw-r--r--cli/tests/dont_panic_not_found_cwd.ts3
-rw-r--r--cli/tests/integration_tests.rs19
-rw-r--r--cli/tools/test_runner.rs11
-rw-r--r--cli/tsc.rs7
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)) {