#!/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