Files

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