| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/bin/sh
- #
- # Phase-0 test runner for M2c.
- # Usage: ./run_tests.sh (from the m2c directory, after ./build.sh)
- #
- pass=0
- fail=0
- expect_ok() {
- # $1 = test file (no dir)
- name="$1"
- out=$(./M2c "tests/$name" 2>&1)
- case "$out" in
- *"Parsed correctly"*)
- echo "ok $name accepted"
- pass=$((pass+1)) ;;
- *)
- echo "FAIL $name: expected accept, got: $out"
- fail=$((fail+1)) ;;
- esac
- }
- expect_fail() {
- # $1 = test file, $2 = message text expected in the .LST
- name="$1"
- want="$2"
- out=$(./M2c "tests/$name" 2>&1)
- case "$out" in
- *"Incorrect source"*) ;;
- *)
- echo "FAIL $name: expected rejection, got: $out"
- fail=$((fail+1)); return ;;
- esac
- lst="tests/$(basename "$name" .mod).LST"
- if grep -q "$want" "$lst" 2>/dev/null; then
- echo "ok $name rejected with [$want]"
- pass=$((pass+1))
- else
- echo "FAIL $name: [$want] not found in $lst"
- fail=$((fail+1))
- fi
- }
- echo "=== Phase-0 tests ==="
- expect_ok ok_minimal.mod
- expect_ok ok_nobegin.mod
- expect_fail bad_mismatch.mod "module name mismatch"
- expect_fail bad_syntax.mod "expected"
- echo "=== $pass passed, $fail failed ==="
- test "$fail" = 0
|