mirror of
https://github.com/pezkuwichain/wasm-instrument.git
synced 2026-06-12 05:21:04 +00:00
Replace wabt with rust tools (#5)
This commit is contained in:
committed by
GitHub
parent
8291876394
commit
374afe5700
+15
-5
@@ -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
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user