Replace wabt with rust tools (#5)

This commit is contained in:
Alexander Theißen
2022-01-30 13:05:07 +01:00
committed by GitHub
parent 8291876394
commit 374afe5700
18 changed files with 110 additions and 126 deletions
+15 -5
View File
@@ -71,10 +71,8 @@ mod tests {
use parity_wasm::elements;
fn parse_wat(source: &str) -> elements::Module {
let module_bytes = wabt::Wat2Wasm::new()
.validate(true)
.convert(source)
.expect("failed to parse module");
let module_bytes = wat::parse_str(source).unwrap();
wasmparser::validate(&module_bytes).unwrap();
elements::deserialize_buffer(module_bytes.as_ref()).expect("failed to parse module")
}
@@ -93,7 +91,19 @@ mod tests {
let expected_bytes = elements::serialize(expected_module)
.expect("injected module must have a function body");
assert_eq!(actual_bytes, expected_bytes);
let actual_wat = wasmprinter::print_bytes(actual_bytes).unwrap();
let expected_wat = wasmprinter::print_bytes(expected_bytes).unwrap();
if actual_wat != expected_wat {
for diff in diff::lines(&expected_wat, &actual_wat) {
match diff {
diff::Result::Left(l) => println!("-{}", l),
diff::Result::Both(l, _) => println!(" {}", l),
diff::Result::Right(r) => println!("+{}", r),
}
}
panic!()
}
}
};
}
+22 -37
View File
@@ -613,21 +613,15 @@ mod tests {
#[test]
fn simple_grow() {
let module = builder::module()
.global()
.value_type()
.i32()
.build()
.function()
.signature()
.param()
.i32()
.build()
.body()
.with_instructions(elements::Instructions::new(vec![GetGlobal(0), GrowMemory(0), End]))
.build()
.build()
.build();
let module = parse_wat(
r#"(module
(func (result i32)
global.get 0
memory.grow)
(global i32 (i32.const 42))
(memory 0 1)
)"#,
);
let injected_module = inject(module, &ConstantCostRules::new(1, 10_000), "env").unwrap();
@@ -642,26 +636,20 @@ mod tests {
);
let binary = serialize(injected_module).expect("serialization failed");
wabt::wasm2wat(&binary).unwrap();
wasmparser::validate(&binary).unwrap();
}
#[test]
fn grow_no_gas_no_track() {
let module = builder::module()
.global()
.value_type()
.i32()
.build()
.function()
.signature()
.param()
.i32()
.build()
.body()
.with_instructions(elements::Instructions::new(vec![GetGlobal(0), GrowMemory(0), End]))
.build()
.build()
.build();
let module = parse_wat(
r"(module
(func (result i32)
global.get 0
memory.grow)
(global i32 (i32.const 42))
(memory 0 1)
)",
);
let injected_module = inject(module, &ConstantCostRules::default(), "env").unwrap();
@@ -673,7 +661,7 @@ mod tests {
assert_eq!(injected_module.functions_space(), 2);
let binary = serialize(injected_module).expect("serialization failed");
wabt::wasm2wat(&binary).unwrap();
wasmparser::validate(&binary).unwrap();
}
#[test]
@@ -741,11 +729,8 @@ mod tests {
}
fn parse_wat(source: &str) -> elements::Module {
let module_bytes = wabt::Wat2Wasm::new()
.validate(false)
.convert(source)
.expect("failed to parse module");
elements::deserialize_buffer(module_bytes.as_ref()).expect("failed to parse module")
let module_bytes = wat::parse_str(source).unwrap();
elements::deserialize_buffer(module_bytes.as_ref()).unwrap()
}
macro_rules! test_gas_counter_injection {
+5 -11
View File
@@ -415,7 +415,7 @@ mod tests {
use parity_wasm::elements;
fn parse_wat(source: &str) -> elements::Module {
elements::deserialize_buffer(&wabt::wat2wasm(source).expect("Failed to wat2wasm"))
elements::deserialize_buffer(&wat::parse_str(source).expect("Failed to wat2wasm"))
.expect("Failed to deserialize the module")
}
@@ -477,7 +477,8 @@ mod tests {
#[test]
fn yet_another_test() {
const SOURCE: &str = r#"
let module = parse_wat(
r#"
(module
(memory 0)
(func
@@ -496,15 +497,8 @@ mod tests {
i32.const 2
)
)
"#;
let module = elements::deserialize_buffer(
wabt::Wat2Wasm::new()
.validate(false)
.convert(SOURCE)
.expect("Failed to wat2wasm")
.as_ref(),
)
.expect("Failed to deserialize the module");
"#,
);
let height = compute(0, &module).unwrap();
assert_eq!(height, 2 + ACTIVATION_FRAME_COST);
+2 -5
View File
@@ -351,16 +351,13 @@ mod tests {
use parity_wasm::elements;
fn parse_wat(source: &str) -> elements::Module {
elements::deserialize_buffer(&wabt::wat2wasm(source).expect("Failed to wat2wasm"))
elements::deserialize_buffer(&wat::parse_str(source).expect("Failed to wat2wasm"))
.expect("Failed to deserialize the module")
}
fn validate_module(module: elements::Module) {
let binary = elements::serialize(module).expect("Failed to serialize");
wabt::Module::read_binary(&binary, &Default::default())
.expect("Wabt failed to read final binary")
.validate()
.expect("Invalid module");
wasmparser::validate(&binary).expect("Invalid module");
}
#[test]