#test-suite #mirror #shim #mvp #spec #webasembly

greenwasm-spectest

官方WebAssembly MVP测试套件的镜像库封装

5个版本

使用旧Rust 2015

0.3.3 2018年9月4日
0.3.2 2018年9月3日
0.3.1 2018年9月3日
0.3.0 2018年9月2日
0.2.0 2018年9月1日

#41 in #test-suite


greenwasm使用

MIT/Apache

3MB
47K SLoC

WebAssembly 47K SLoC // 0.0% comments Rust 346 SLoC // 0.3% comments Shell 118 SLoC // 0.1% comments Python 70 SLoC // 0.1% comments

greenwasm-spectest

官方WebAssembly MVP测试套件的镜像库封装。

可以作为独立测试套件启动器用于其他Webassembly实现。

许可证

根据以下任一许可证授权:

由您选择。

贡献

除非您明确表示,否则您有意提交以包含在本作品中的任何贡献,根据Apache-2.0许可证的定义,应按上述方式双许可,而无需任何附加条款或条件。


lib.rs:

官方webassembly MVP测试套件的镜像库封装。

通过实现ScriptHandler,它可以作为独立测试套件启动器用于其他webassembly实现。

示例

use greenwasm_spectest::*;

struct DummyHandler;
impl ScriptHandler for DummyHandler {
fn reset(&mut self) {}
fn action_invoke(&mut self,
module: Option<String>,
field: String,
args: Vec<Value>) -> InvokationResult
{
unimplemented!()
}
fn action_get(&mut self,
module: Option<String>,
field: String) -> Value
{
unimplemented!()
}
fn module(&mut self, bytes: Vec<u8>, name: Option<String>) {
unimplemented!()
}
fn assert_malformed(&mut self, bytes: Vec<u8>) {
unimplemented!()
}
fn assert_invalid(&mut self, bytes: Vec<u8>) {
unimplemented!()
}
fn assert_uninstantiable(&mut self, bytes: Vec<u8>) {
unimplemented!()
}
fn assert_exhaustion(&mut self, action: Action) {
unimplemented!()
}
fn register(&mut self, name: Option<String>, as_name: String) {
unimplemented!()
}
}

run_mvp_spectest(&mut DummyHandler).present();

这将产生如下输出

Executing address.wast ...
Executing align.wast ...
Executing binary.wast ...
Executing block.wast ...
Executing br.wast ...
[...]

wast failures:
address.wast:3, not yet implemented
address.wast:104, <not attempted>
address.wast:105, <not attempted>
...
wast total: 0 passed; 17955 failed

依赖项

~17MB
~289K SLoC