Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 3 commits into from
May 8, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions test_plugin/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
14 changes: 12 additions & 2 deletions test_plugin/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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);
Expand All @@ -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);
Expand Down
19 changes: 18 additions & 1 deletion test_plugin/tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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, "");
}
6 changes: 3 additions & 3 deletions test_plugin/tests/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ if (
function runTestSync() {
const result = Deno.core.opSync(
"op_test_sync",
null,
{ val: "1" },
new Uint8Array([116, 101, 115, 116]),
);

Expand All @@ -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]),
);

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

Expand Down