41 lines
1.3 KiB
Bash
Executable File
41 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Run from the repo root
|
|
|
|
WASM=./src/wasm
|
|
PASS=0
|
|
FAIL=0
|
|
TESTS=0
|
|
|
|
check() {
|
|
TESTS=$((TESTS + 1))
|
|
desc="$1"; shift
|
|
expected="$1"; shift
|
|
output=$("$@" 2>&1)
|
|
if echo "$output" | grep -q "$expected"; then
|
|
PASS=$((PASS + 1))
|
|
echo " OK $desc"
|
|
else
|
|
FAIL=$((FAIL + 1))
|
|
echo " FAIL $desc"
|
|
echo " expected: $expected"
|
|
echo " got: $output"
|
|
fi
|
|
}
|
|
|
|
echo "=== wasm runtime tests ==="
|
|
|
|
check "no arguments" "Usage:" $WASM
|
|
check "valid wasm" "Valid wasm file" $WASM test/wasm/valid.wasm
|
|
check "bad magic" "invalid wasm magic" $WASM test/wasm/badmagic.wasm
|
|
check "bad version" "unsupported wasm" $WASM test/wasm/badver.wasm
|
|
check "section list" "(Type)" $WASM test/wasm/valid.wasm
|
|
check "type no params" "() -> (i32)" $WASM test/wasm/valid.wasm
|
|
check "type two params" "(i32, i32) -> (i32)" $WASM test/wasm/add.wasm
|
|
check "import parsed" 'import "env"."print_i32"' $WASM test/wasm/import.wasm
|
|
check "func index" "func 0 -> type 0 (imported)" $WASM test/wasm/import.wasm
|
|
check "signature" "i32 add(i32, i32)" $WASM test/wasm/add.wasm
|
|
|
|
echo ""
|
|
echo "Results: $PASS/$TESTS passed, $FAIL failed"
|
|
[ "$FAIL" -eq 0 ] && exit 0 || exit 1
|