diff options
| author | Casper Beyer <caspervonb@pm.me> | 2021-04-29 02:17:04 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-28 20:17:04 +0200 |
| commit | c455c28b834683f6516422dbf1b020fbb2c1bbb6 (patch) | |
| tree | 96e1484f4853969ae46539c26ffd8d716f409eb7 /cli/ops | |
| parent | 0260b488fbba9a43c64641428d3603b8761067a4 (diff) | |
feat(test): run test modules in parallel (#9815)
This commit adds support for running test in parallel.
Entire test runner functionality has been rewritten
from JavaScript to Rust and a set of ops was added to support reporting in Rust.
A new "--jobs" flag was added to "deno test" that allows to configure
how many threads will be used. When given no value it defaults to 2.
Diffstat (limited to 'cli/ops')
| -rw-r--r-- | cli/ops/mod.rs | 2 | ||||
| -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)) + } +} |
