30 lines
1.0 KiB
Rust
Raw Normal View History

use wabt::script::{ScriptParser, Command, CommandKind};
use parity_wasm::elements::{Module, deserialize_buffer};
pub fn spec(path: &str) {
2018-02-20 18:05:19 +03:00
let mut parser = ScriptParser::from_file(&format!("./testsuite/{}.wast", path)).expect("Can't read spec script");
while let Some(Command { kind, line }) = parser.next().expect("Failed to iterate") {
match kind {
CommandKind::AssertMalformed { module, .. } =>
{
2018-02-20 19:40:59 +03:00
match deserialize_buffer::<Module>(
2018-02-20 18:05:19 +03:00
&module.into_vec().expect("Invalid filename provided")
2018-02-20 19:40:59 +03:00
) {
2018-02-20 18:05:19 +03:00
Ok(_) => panic!("Expected invalid module definition, got some module!"),
Err(e) => println!("assert_invalid at line {} - success ({:?})", line, e),
}
}
2018-02-20 19:40:59 +03:00
CommandKind::Module { module, .. } => {
match deserialize_buffer::<Module>(
&module.into_vec().expect("Invalid filename provided")
) {
Ok(_) => println!("module at line {} - parsed ok", line),
Err(e) => panic!("Valid module reported error ({:?})", e),
}
}
2018-02-20 18:05:19 +03:00
_ => {
// Skipping interpreted
}
}
}
}