summaryrefslogtreecommitdiff
path: root/cli/ops
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops')
-rw-r--r--cli/ops/mod.rs2
-rw-r--r--cli/ops/testing.rs (renamed from cli/ops/test_runner.rs)31
2 files changed, 29 insertions, 4 deletions
diff --git a/cli/ops/mod.rs b/cli/ops/mod.rs
index 386ad16fa..a3df77fac 100644
--- a/cli/ops/mod.rs
+++ b/cli/ops/mod.rs
@@ -2,6 +2,6 @@
pub mod errors;
pub mod runtime_compiler;
-pub mod test_runner;
+pub mod testing;
pub use deno_runtime::ops::{reg_async, reg_sync};
diff --git a/cli/ops/test_runner.rs b/cli/ops/testing.rs
index 380ec7fb0..450f55a41 100644
--- a/cli/ops/test_runner.rs
+++ b/cli/ops/testing.rs
@@ -1,23 +1,27 @@
-// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
-
+use crate::tools::test_runner::TestMessage;
use deno_core::error::generic_error;
use deno_core::error::AnyError;
use deno_core::serde_json;
+use deno_core::serde_json::json;
use deno_core::serde_json::Value;
+use deno_core::JsRuntime;
use deno_core::OpState;
use deno_core::ZeroCopyBuf;
use deno_runtime::ops::worker_host::create_worker_permissions;
use deno_runtime::ops::worker_host::PermissionsArg;
use deno_runtime::permissions::Permissions;
+use serde::Deserialize;
+use std::sync::mpsc::Sender;
use uuid::Uuid;
-pub fn init(rt: &mut deno_core::JsRuntime) {
+pub fn init(rt: &mut JsRuntime) {
super::reg_sync(rt, "op_pledge_test_permissions", op_pledge_test_permissions);
super::reg_sync(
rt,
"op_restore_test_permissions",
op_restore_test_permissions,
);
+ super::reg_sync(rt, "op_post_test_message", op_post_test_message);
}
#[derive(Clone)]
@@ -64,3 +68,24 @@ pub fn op_restore_test_permissions(
Err(generic_error("no permissions to restore"))
}
}
+
+#[derive(Debug, Deserialize)]
+#[serde(rename_all = "camelCase")]
+struct PostTestMessageArgs {
+ message: TestMessage,
+}
+
+fn op_post_test_message(
+ state: &mut OpState,
+ args: Value,
+ _zero_copy: Option<ZeroCopyBuf>,
+) -> Result<Value, AnyError> {
+ let args: PostTestMessageArgs = serde_json::from_value(args)?;
+ let sender = state.borrow::<Sender<TestMessage>>().clone();
+
+ if sender.send(args.message).is_err() {
+ Ok(json!(false))
+ } else {
+ Ok(json!(true))
+ }
+}