mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-11-28 14:27:36 +03:00
87 lines
2.0 KiB
Rust
87 lines
2.0 KiB
Rust
|
use std::process::Command;
|
||
|
use super::{run, project};
|
||
|
|
||
|
#[test]
|
||
|
fn works() {
|
||
|
let mut p = project();
|
||
|
let name = p.crate_name();
|
||
|
p
|
||
|
.rlib(true)
|
||
|
.file("src/lib.rs", r#"
|
||
|
#![feature(proc_macro, wasm_custom_section, wasm_import_module)]
|
||
|
|
||
|
extern crate wasm_bindgen;
|
||
|
|
||
|
use wasm_bindgen::prelude::*;
|
||
|
|
||
|
#[wasm_bindgen]
|
||
|
pub struct A {
|
||
|
x: u32,
|
||
|
}
|
||
|
|
||
|
#[wasm_bindgen]
|
||
|
impl A {
|
||
|
pub fn new() -> A {
|
||
|
A { x: 3 }
|
||
|
}
|
||
|
|
||
|
pub fn foo(&self) {
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[wasm_bindgen]
|
||
|
pub fn foo(x: bool) {
|
||
|
A::new().foo();
|
||
|
|
||
|
if x {
|
||
|
bar("test");
|
||
|
baz(JsValue::from(3));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[wasm_bindgen]
|
||
|
extern {
|
||
|
fn some_import();
|
||
|
static A: JsValue;
|
||
|
}
|
||
|
|
||
|
#[wasm_bindgen]
|
||
|
pub fn bar(_: &str) -> JsValue {
|
||
|
some_import();
|
||
|
A.clone()
|
||
|
}
|
||
|
|
||
|
#[wasm_bindgen]
|
||
|
pub fn baz(_: JsValue) {
|
||
|
}
|
||
|
"#)
|
||
|
.file("tests/foo.rs", &format!("
|
||
|
extern crate {} as mytest;
|
||
|
|
||
|
#[test]
|
||
|
fn foo() {{
|
||
|
mytest::foo(false);
|
||
|
mytest::A::new().foo();
|
||
|
}}
|
||
|
", name))
|
||
|
.file("benches/foo.rs", &format!("
|
||
|
#![feature(test)]
|
||
|
extern crate test;
|
||
|
extern crate {} as mytest;
|
||
|
|
||
|
#[bench]
|
||
|
fn foo(b: &mut test::Bencher) {{
|
||
|
b.iter(|| mytest::foo(false));
|
||
|
}}
|
||
|
", name));
|
||
|
let (root, target_dir) = p.build();
|
||
|
let mut cmd = Command::new("cargo");
|
||
|
cmd.arg("test")
|
||
|
.arg("--test").arg("foo")
|
||
|
.arg("--bench").arg("foo")
|
||
|
.current_dir(&root)
|
||
|
.env("CARGO_TARGET_DIR", &target_dir);
|
||
|
run(&mut cmd, "cargo");
|
||
|
}
|
||
|
|