wasmer/spectests/README.md

2.4 KiB

This directory contains tests for the core WebAssembly semantics, as described in Semantics.md and specified by the spec interpreter.

This files should be a direct copy of the original WebAssembly spec tests.

Tests are written in the S-Expression script format defined by the interpreter.

Autogenerated Rust test cases

This files will serve as base for autogenerating Rust testcases when WASM_GENERATE_SPECTESTS=1 cargo build is executed (src/build_spectests.rs).

The result autogenerated spectests live in the src/spectests directory.

The spectests are slightly modified from the source. This are the current things that are skipped as they are not yet supported:

Testcases

Currently supported command assertions:

  • Module mostly implemented (it should support named modules (module $Xx)).
  • AssertReturn mostly implemented (it should support calls to named modules (invoke $Xx "call")).
  • [] AssertReturnCanonicalNan not implemented yet
  • [] AssertReturnArithmeticNan not implemented yet
  • [] AssertTrap not implemented yet
  • AssertInvalid Fully implemented (it should not require to do validation separate from compilation)
  • AssertMalformed Fully implemented
  • [] AssertUninstantiable not implemented yet
  • [] AssertExhaustion not implemented yet
  • [] Register not implemented yet
  • [] PerformAction not implemented yet

Specific non-supported cases

There are some cases that we decided to skip for now to fasten the time to release:

  • SKIP_NAN_BITS: Cases like params to invokations such as: (f32.const nan:0x200000) are currently not well supported in tests. Files modified:
    • conversions.wast
  • SKIP_MEMORY_GROW: When accessing to the context memories multiple times, the mutable access to a memory index raises an error. For this reason we decied to skip the tests (for now) until this issue is resolved. Files modified:
    • block.wast
    • call_indirect.wast
    • call.wast
    • globals.wast