summaryrefslogtreecommitdiff
path: root/core/modules.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules.rs')
-rw-r--r--core/modules.rs41
1 files changed, 19 insertions, 22 deletions
diff --git a/core/modules.rs b/core/modules.rs
index d4a0a86ef..7c5274193 100644
--- a/core/modules.rs
+++ b/core/modules.rs
@@ -1073,13 +1073,11 @@ impl ModuleMap {
#[cfg(test)]
mod tests {
use super::*;
- use crate::ops::OpCall;
- use crate::serialize_op_result;
+ use crate::error::AnyError;
use crate::Extension;
use crate::JsRuntime;
- use crate::Op;
- use crate::OpPayload;
use crate::RuntimeOptions;
+ use deno_ops::op;
use futures::future::FutureExt;
use parking_lot::Mutex;
use std::fmt;
@@ -1088,6 +1086,10 @@ mod tests {
use std::path::PathBuf;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
+ // deno_ops macros generate code assuming deno_core in scope.
+ mod deno_core {
+ pub use crate::*;
+ }
// TODO(ry) Sadly FuturesUnordered requires the current task to be set. So
// even though we are only using poll() in these tests and not Tokio, we must
@@ -1401,20 +1403,16 @@ import "/a.js";
let loader = Rc::new(ModsLoader::default());
let resolve_count = loader.count.clone();
- let dispatch_count = Arc::new(AtomicUsize::new(0));
- let dispatch_count_ = dispatch_count.clone();
+ static DISPATCH_COUNT: AtomicUsize = AtomicUsize::new(0);
- let op_test = move |state, payload: OpPayload| -> Op {
- dispatch_count_.fetch_add(1, Ordering::Relaxed);
- let (control, _): (u8, ()) = payload.deserialize().unwrap();
+ #[op]
+ fn op_test(_: &mut OpState, control: u8, _: ()) -> Result<u8, AnyError> {
+ DISPATCH_COUNT.fetch_add(1, Ordering::Relaxed);
assert_eq!(control, 42);
- let resp = (0, 1, serialize_op_result(Ok(43), state));
- Op::Async(OpCall::ready(resp))
- };
+ Ok(43)
+ }
- let ext = Extension::builder()
- .ops(vec![("op_test", Box::new(op_test))])
- .build();
+ let ext = Extension::builder().ops(vec![op_test::decl()]).build();
let mut runtime = JsRuntime::new(RuntimeOptions {
extensions: vec![ext],
@@ -1435,7 +1433,7 @@ import "/a.js";
)
.unwrap();
- assert_eq!(dispatch_count.load(Ordering::Relaxed), 0);
+ assert_eq!(DISPATCH_COUNT.load(Ordering::Relaxed), 0);
let module_map_rc = JsRuntime::module_map(runtime.v8_isolate());
@@ -1452,12 +1450,12 @@ import "/a.js";
import { b } from './b.js'
if (b() != 'b') throw Error();
let control = 42;
- Deno.core.opAsync("op_test", control);
+ Deno.core.opSync("op_test", control);
"#,
)
.unwrap();
- assert_eq!(dispatch_count.load(Ordering::Relaxed), 0);
+ assert_eq!(DISPATCH_COUNT.load(Ordering::Relaxed), 0);
let imports = module_map.get_requested_modules(mod_a);
assert_eq!(
imports,
@@ -1481,14 +1479,14 @@ import "/a.js";
};
runtime.instantiate_module(mod_b).unwrap();
- assert_eq!(dispatch_count.load(Ordering::Relaxed), 0);
+ assert_eq!(DISPATCH_COUNT.load(Ordering::Relaxed), 0);
assert_eq!(resolve_count.load(Ordering::SeqCst), 1);
runtime.instantiate_module(mod_a).unwrap();
- assert_eq!(dispatch_count.load(Ordering::Relaxed), 0);
+ assert_eq!(DISPATCH_COUNT.load(Ordering::Relaxed), 0);
let _ = runtime.mod_evaluate(mod_a);
- assert_eq!(dispatch_count.load(Ordering::Relaxed), 1);
+ assert_eq!(DISPATCH_COUNT.load(Ordering::Relaxed), 1);
}
#[test]
@@ -1766,7 +1764,6 @@ import "/a.js";
module_loader: Some(loader),
..Default::default()
});
- runtime.sync_ops_cache();
runtime
.execute_script(
"file:///dyn_import3.js",