1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-25 15:29:32 -05:00

feat(plugin): add tests for plugin args (#10529)

This commit is contained in:
Cedric Vangout 2021-05-08 16:38:18 +04:00 committed by GitHub
parent d5f39fd121
commit a051a7f7bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 6 deletions

1
Cargo.lock generated
View file

@ -3407,6 +3407,7 @@ version = "0.0.1"
dependencies = [
"deno_core",
"futures",
"serde",
"test_util",
]

View file

@ -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" }

View file

@ -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);

View file

@ -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, "");
}

View file

@ -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();