mirror of
https://github.com/denoland/deno.git
synced 2024-11-25 15:29:32 -05:00
refactor: create JsRuntime outside of run_in_task (#17667)
This commit is contained in:
parent
84a96110cd
commit
fd511d5755
2 changed files with 81 additions and 78 deletions
|
@ -1803,15 +1803,15 @@ import "/a.js";
|
|||
}
|
||||
}
|
||||
|
||||
// Test an erroneous dynamic import where the specified module isn't found.
|
||||
run_in_task(|cx| {
|
||||
let loader = Rc::new(DynImportErrLoader::default());
|
||||
let count = loader.count.clone();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
let loader = Rc::new(DynImportErrLoader::default());
|
||||
let count = loader.count.clone();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
// Test an erroneous dynamic import where the specified module isn't found.
|
||||
run_in_task(move |cx| {
|
||||
runtime
|
||||
.execute_script(
|
||||
"file:///dyn_import2.js",
|
||||
|
@ -1886,16 +1886,15 @@ import "/a.js";
|
|||
|
||||
#[test]
|
||||
fn dyn_import_ok() {
|
||||
run_in_task(|cx| {
|
||||
let loader = Rc::new(DynImportOkLoader::default());
|
||||
let prepare_load_count = loader.prepare_load_count.clone();
|
||||
let resolve_count = loader.resolve_count.clone();
|
||||
let load_count = loader.load_count.clone();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
let loader = Rc::new(DynImportOkLoader::default());
|
||||
let prepare_load_count = loader.prepare_load_count.clone();
|
||||
let resolve_count = loader.resolve_count.clone();
|
||||
let load_count = loader.load_count.clone();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
run_in_task(move |cx| {
|
||||
// Dynamically import mod_b
|
||||
runtime
|
||||
.execute_script(
|
||||
|
@ -1935,13 +1934,14 @@ import "/a.js";
|
|||
#[test]
|
||||
fn dyn_import_borrow_mut_error() {
|
||||
// https://github.com/denoland/deno/issues/6054
|
||||
run_in_task(|cx| {
|
||||
let loader = Rc::new(DynImportOkLoader::default());
|
||||
let prepare_load_count = loader.prepare_load_count.clone();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
let loader = Rc::new(DynImportOkLoader::default());
|
||||
let prepare_load_count = loader.prepare_load_count.clone();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
run_in_task(move |cx| {
|
||||
runtime
|
||||
.execute_script(
|
||||
"file:///dyn_import3.js",
|
||||
|
@ -2193,13 +2193,14 @@ import "/a.js";
|
|||
|
||||
#[test]
|
||||
fn slow_never_ready_modules() {
|
||||
run_in_task(|cx| {
|
||||
let loader = MockLoader::new();
|
||||
let loads = loader.loads.clone();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
let loader = MockLoader::new();
|
||||
let loads = loader.loads.clone();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
run_in_task(move |cx| {
|
||||
let spec = resolve_url("file:///main.js").unwrap();
|
||||
let mut recursive_load =
|
||||
runtime.load_main_module(&spec, None).boxed_local();
|
||||
|
@ -2238,12 +2239,13 @@ import "/a.js";
|
|||
|
||||
#[test]
|
||||
fn loader_disappears_after_error() {
|
||||
run_in_task(|cx| {
|
||||
let loader = MockLoader::new();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
let loader = MockLoader::new();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
module_loader: Some(loader),
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
run_in_task(move |cx| {
|
||||
let spec = resolve_url("file:///bad_import.js").unwrap();
|
||||
let mut load_fut = runtime.load_main_module(&spec, None).boxed_local();
|
||||
let result = load_fut.poll_unpin(cx);
|
||||
|
|
|
@ -2730,7 +2730,7 @@ pub mod tests {
|
|||
|
||||
pub fn run_in_task<F>(f: F)
|
||||
where
|
||||
F: FnOnce(&mut Context) + Send + 'static,
|
||||
F: FnOnce(&mut Context) + 'static,
|
||||
{
|
||||
futures::executor::block_on(lazy(move |cx| f(cx)));
|
||||
}
|
||||
|
@ -2962,8 +2962,8 @@ pub mod tests {
|
|||
|
||||
#[tokio::test]
|
||||
async fn test_poll_value() {
|
||||
run_in_task(|cx| {
|
||||
let mut runtime = JsRuntime::new(Default::default());
|
||||
let mut runtime = JsRuntime::new(Default::default());
|
||||
run_in_task(move |cx| {
|
||||
let value_global = runtime
|
||||
.execute_script("a.js", "Promise.resolve(1 + 2)")
|
||||
.unwrap();
|
||||
|
@ -3162,8 +3162,8 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_encode_decode() {
|
||||
run_in_task(|cx| {
|
||||
let (mut runtime, _dispatch_count) = setup(Mode::Async);
|
||||
let (mut runtime, _dispatch_count) = setup(Mode::Async);
|
||||
run_in_task(move |cx| {
|
||||
runtime
|
||||
.execute_script(
|
||||
"encode_decode_test.js",
|
||||
|
@ -3178,8 +3178,8 @@ pub mod tests {
|
|||
|
||||
#[test]
|
||||
fn test_serialize_deserialize() {
|
||||
run_in_task(|cx| {
|
||||
let (mut runtime, _dispatch_count) = setup(Mode::Async);
|
||||
let (mut runtime, _dispatch_count) = setup(Mode::Async);
|
||||
run_in_task(move |cx| {
|
||||
runtime
|
||||
.execute_script(
|
||||
"serialize_deserialize_test.js",
|
||||
|
@ -3203,15 +3203,15 @@ pub mod tests {
|
|||
"DOMExceptionOperationError"
|
||||
}
|
||||
|
||||
run_in_task(|cx| {
|
||||
let ext = Extension::builder("test_ext")
|
||||
.ops(vec![op_err::decl()])
|
||||
.build();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
extensions: vec![ext],
|
||||
get_error_class_fn: Some(&get_error_class_name),
|
||||
..Default::default()
|
||||
});
|
||||
let ext = Extension::builder("test_ext")
|
||||
.ops(vec![op_err::decl()])
|
||||
.build();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
extensions: vec![ext],
|
||||
get_error_class_fn: Some(&get_error_class_name),
|
||||
..Default::default()
|
||||
});
|
||||
run_in_task(move |cx| {
|
||||
runtime
|
||||
.execute_script(
|
||||
"error_builder_test.js",
|
||||
|
@ -3725,8 +3725,8 @@ main();
|
|||
|
||||
#[test]
|
||||
fn test_error_async_stack() {
|
||||
run_in_task(|cx| {
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions::default());
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions::default());
|
||||
run_in_task(move |cx| {
|
||||
runtime
|
||||
.execute_script(
|
||||
"error_async_stack.js",
|
||||
|
@ -3774,15 +3774,15 @@ main();
|
|||
Err(anyhow!("original async error").context("higher-level async error"))
|
||||
}
|
||||
|
||||
run_in_task(|cx| {
|
||||
let ext = Extension::builder("test_ext")
|
||||
.ops(vec![op_err_sync::decl(), op_err_async::decl()])
|
||||
.build();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
extensions: vec![ext],
|
||||
..Default::default()
|
||||
});
|
||||
let ext = Extension::builder("test_ext")
|
||||
.ops(vec![op_err_sync::decl(), op_err_async::decl()])
|
||||
.build();
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
extensions: vec![ext],
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
run_in_task(move |cx| {
|
||||
runtime
|
||||
.execute_script(
|
||||
"test_error_context_sync.js",
|
||||
|
@ -3830,8 +3830,8 @@ Deno.core.initializeAsyncOps();
|
|||
|
||||
#[test]
|
||||
fn test_pump_message_loop() {
|
||||
run_in_task(|cx| {
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions::default());
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions::default());
|
||||
run_in_task(move |cx| {
|
||||
runtime
|
||||
.execute_script(
|
||||
"pump_message_loop.js",
|
||||
|
@ -4808,19 +4808,20 @@ Deno.core.ops.op_async_serialize_object_with_numbers_as_keys({
|
|||
|
||||
#[tokio::test]
|
||||
async fn js_realm_ref_unref_ops() {
|
||||
run_in_task(|cx| {
|
||||
// Never resolves.
|
||||
#[op]
|
||||
async fn op_pending() {
|
||||
futures::future::pending().await
|
||||
}
|
||||
// Never resolves.
|
||||
#[op]
|
||||
async fn op_pending() {
|
||||
futures::future::pending().await
|
||||
}
|
||||
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
extensions: vec![Extension::builder("test_ext")
|
||||
.ops(vec![op_pending::decl()])
|
||||
.build()],
|
||||
..Default::default()
|
||||
});
|
||||
let mut runtime = JsRuntime::new(RuntimeOptions {
|
||||
extensions: vec![Extension::builder("test_ext")
|
||||
.ops(vec![op_pending::decl()])
|
||||
.build()],
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
run_in_task(move |cx| {
|
||||
let main_realm = runtime.global_realm();
|
||||
let other_realm = runtime.create_realm().unwrap();
|
||||
|
||||
|
|
Loading…
Reference in a new issue