mirror of
https://github.com/denoland/deno.git
synced 2024-12-26 00:59:24 -05:00
feat(plugin): add tests for plugin args (#10529)
This commit is contained in:
parent
d5f39fd121
commit
a051a7f7bc
5 changed files with 35 additions and 6 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -3407,6 +3407,7 @@ version = "0.0.1"
|
|||
dependencies = [
|
||||
"deno_core",
|
||||
"futures",
|
||||
"serde",
|
||||
"test_util",
|
||||
]
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ crate-type = ["cdylib"]
|
|||
[dependencies]
|
||||
deno_core = { path = "../core" }
|
||||
futures = "0.3.9"
|
||||
serde = "1"
|
||||
|
||||
[dev-dependencies]
|
||||
test_util = { path = "../test_util" }
|
||||
|
|
|
@ -13,6 +13,7 @@ use deno_core::OpState;
|
|||
use deno_core::Resource;
|
||||
use deno_core::ResourceId;
|
||||
use deno_core::ZeroCopyBuf;
|
||||
use serde::Deserialize;
|
||||
|
||||
#[no_mangle]
|
||||
pub fn init() -> Extension {
|
||||
|
@ -32,13 +33,20 @@ pub fn init() -> Extension {
|
|||
.build()
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct TestArgs {
|
||||
val: String,
|
||||
}
|
||||
|
||||
fn op_test_sync(
|
||||
_state: &mut OpState,
|
||||
_args: (),
|
||||
args: TestArgs,
|
||||
zero_copy: Option<ZeroCopyBuf>,
|
||||
) -> Result<String, AnyError> {
|
||||
println!("Hello from sync plugin op.");
|
||||
|
||||
println!("args: {:?}", args);
|
||||
|
||||
if let Some(buf) = zero_copy {
|
||||
let buf_str = std::str::from_utf8(&buf[..])?;
|
||||
println!("zero_copy: {}", buf_str);
|
||||
|
@ -49,11 +57,13 @@ fn op_test_sync(
|
|||
|
||||
async fn op_test_async(
|
||||
_state: Rc<RefCell<OpState>>,
|
||||
_args: (),
|
||||
args: TestArgs,
|
||||
zero_copy: Option<ZeroCopyBuf>,
|
||||
) -> Result<String, AnyError> {
|
||||
println!("Hello from async plugin op.");
|
||||
|
||||
println!("args: {:?}", args);
|
||||
|
||||
if let Some(buf) = zero_copy {
|
||||
let buf_str = std::str::from_utf8(&buf[..])?;
|
||||
println!("zero_copy: {}", buf_str);
|
||||
|
|
|
@ -35,7 +35,24 @@ fn basic() {
|
|||
}
|
||||
println!("{:?}", output.status);
|
||||
assert!(output.status.success());
|
||||
let expected = "Plugin rid: 3\nHello from sync plugin op.\nzero_copy: test\nop_test_sync returned: test\nHello from async plugin op.\nzero_copy: 123\nop_test_async returned: test\nHello from resource_table.add plugin op.\nTestResource rid: 4\nHello from resource_table.get plugin op.\nTestResource get value: hello plugin!\nHello from sync plugin op.\nOps completed count is correct!\nOps dispatched count is correct!\n";
|
||||
let expected = "\
|
||||
Plugin rid: 3\n\
|
||||
Hello from sync plugin op.\n\
|
||||
args: TestArgs { val: \"1\" }\n\
|
||||
zero_copy: test\n\
|
||||
op_test_sync returned: test\n\
|
||||
Hello from async plugin op.\n\
|
||||
args: TestArgs { val: \"1\" }\n\
|
||||
zero_copy: 123\n\
|
||||
op_test_async returned: test\n\
|
||||
Hello from resource_table.add plugin op.\n\
|
||||
TestResource rid: 4\n\
|
||||
Hello from resource_table.get plugin op.\n\
|
||||
TestResource get value: hello plugin!\n\
|
||||
Hello from sync plugin op.\n\
|
||||
args: TestArgs { val: \"1\" }\n\
|
||||
Ops completed count is correct!\n\
|
||||
Ops dispatched count is correct!\n";
|
||||
assert_eq!(stdout, expected);
|
||||
assert_eq!(stderr, "");
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ if (
|
|||
function runTestSync() {
|
||||
const result = Deno.core.opSync(
|
||||
"op_test_sync",
|
||||
null,
|
||||
{ val: "1" },
|
||||
new Uint8Array([116, 101, 115, 116]),
|
||||
);
|
||||
|
||||
|
@ -56,7 +56,7 @@ function runTestSync() {
|
|||
async function runTestAsync() {
|
||||
const promise = Deno.core.opAsync(
|
||||
"op_test_async",
|
||||
null,
|
||||
{ val: "1" },
|
||||
new Uint8Array([49, 50, 51]),
|
||||
);
|
||||
|
||||
|
@ -95,7 +95,7 @@ function runTestResourceTable() {
|
|||
function runTestOpCount() {
|
||||
const start = Deno.metrics();
|
||||
|
||||
Deno.core.opSync("op_test_sync");
|
||||
Deno.core.opSync("op_test_sync", { val: "1" });
|
||||
|
||||
const end = Deno.metrics();
|
||||
|
||||
|
|
Loading…
Reference in a new issue