Add test_environ_translate
This commit is contained in:
committed by
Dan Gohman
parent
2a760ae5e8
commit
4ac41213ad
@@ -32,4 +32,7 @@ tempdir = "*"
|
|||||||
faerie = "0.6.0"
|
faerie = "0.6.0"
|
||||||
target-lexicon = { version = "0.2.0", default-features = false }
|
target-lexicon = { version = "0.2.0", default-features = false }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
wabt = "0.7"
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
|
|||||||
20
filetests/rs2wasm-add-func.wat
Normal file
20
filetests/rs2wasm-add-func.wat
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
(module
|
||||||
|
(type (;0;) (func))
|
||||||
|
(type (;1;) (func (param i32 i32) (result i32)))
|
||||||
|
(func $add (type 1) (param i32 i32) (result i32)
|
||||||
|
get_local 1
|
||||||
|
get_local 0
|
||||||
|
i32.add)
|
||||||
|
(func $start (type 0))
|
||||||
|
(table (;0;) 1 1 anyfunc)
|
||||||
|
(memory (;0;) 17)
|
||||||
|
(global (;0;) i32 (i32.const 1049114))
|
||||||
|
(global (;1;) i32 (i32.const 1049114))
|
||||||
|
(export "memory" (memory 0))
|
||||||
|
(export "__indirect_function_table" (table 0))
|
||||||
|
(export "__heap_base" (global 0))
|
||||||
|
(export "__data_end" (global 1))
|
||||||
|
(export "add" (func $add))
|
||||||
|
(export "start" (func $start))
|
||||||
|
(data (i32.const 1048576) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
|
||||||
|
(data (i32.const 1049092) "invalid malloc request"))
|
||||||
39
src/main.rs
39
src/main.rs
@@ -44,6 +44,9 @@ extern crate wasmtime_execute;
|
|||||||
extern crate serde_derive;
|
extern crate serde_derive;
|
||||||
extern crate tempdir;
|
extern crate tempdir;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
extern crate wabt;
|
||||||
|
|
||||||
use cranelift_codegen::isa::TargetIsa;
|
use cranelift_codegen::isa::TargetIsa;
|
||||||
use cranelift_codegen::settings;
|
use cranelift_codegen::settings;
|
||||||
use cranelift_codegen::settings::Configurable;
|
use cranelift_codegen::settings::Configurable;
|
||||||
@@ -215,3 +218,39 @@ fn handle_module(args: &Args, path: PathBuf, isa: &TargetIsa) -> Result<(), Stri
|
|||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use cranelift_codegen::settings;
|
||||||
|
use cranelift_codegen::settings::Configurable;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use wabt;
|
||||||
|
use wasmtime_environ::{Module, ModuleEnvironment};
|
||||||
|
|
||||||
|
const PATH_MODULE_RS2WASM_ADD_FUNC: &str = r"filetests/rs2wasm-add-func.wat";
|
||||||
|
|
||||||
|
/// Simple test reading a wasm-file and translating to binary representation.
|
||||||
|
#[test]
|
||||||
|
fn test_environ_translate() {
|
||||||
|
let path = PathBuf::from(PATH_MODULE_RS2WASM_ADD_FUNC);
|
||||||
|
let wat_data = super::read_to_end(path).unwrap();
|
||||||
|
assert!(wat_data.len() > 0);
|
||||||
|
|
||||||
|
let data = wabt::wat2wasm(wat_data).expect("expecting valid wat-file");
|
||||||
|
assert!(data.len() > 0);
|
||||||
|
|
||||||
|
let mut flag_builder = settings::builder();
|
||||||
|
flag_builder.enable("enable_verifier").unwrap();
|
||||||
|
|
||||||
|
let isa_builder = cranelift_native::builder().unwrap_or_else(|_| {
|
||||||
|
panic!("host machine is not a supported target");
|
||||||
|
});
|
||||||
|
let isa = isa_builder.finish(settings::Flags::new(flag_builder));
|
||||||
|
|
||||||
|
let mut module = Module::new();
|
||||||
|
let environ = ModuleEnvironment::new(&*isa, &mut module);
|
||||||
|
|
||||||
|
let translation = environ.translate(&data);
|
||||||
|
assert!(translation.is_ok());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user