run_tests.sh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/bin/sh
  2. # Regression for M2comp step 2 (Coco/R + SymTab semantic analysis).
  3. # Usage: ./run_tests.sh (from the m2comp directory)
  4. pass=0; fail=0
  5. expect_ok() {
  6. if ./M2comp "$1" 2>&1 | grep -q "Parsed correctly"; then
  7. pass=$((pass+1)); echo "PASS(ok): $1"
  8. else
  9. fail=$((fail+1)); echo "FAIL(ok, rejected): $1"
  10. fi
  11. }
  12. expect_fail() {
  13. if ./M2comp "$1" 2>&1 | grep -q "Incorrect source"; then
  14. pass=$((pass+1)); echo "PASS(fail): $1"
  15. else
  16. fail=$((fail+1)); echo "FAIL(fail, accepted): $1"
  17. fi
  18. }
  19. expect_dump() {
  20. if ./M2comp "$1" 2>&1 | grep -q "$2"; then
  21. pass=$((pass+1)); echo "PASS(ast): $1 [$2]"
  22. else
  23. fail=$((fail+1)); echo "FAIL(ast): $1 [$2]"
  24. fi
  25. }
  26. expect_ok tests/ok_minimal.mod
  27. expect_ok tests/ok_proc.mod
  28. expect_ok tests/showcase.mod
  29. expect_fail tests/bad_mismatch.mod
  30. expect_fail tests/t_dup.mod
  31. expect_fail tests/t_undecl.mod
  32. expect_fail tests/t_assign.mod
  33. expect_fail tests/t_arith.mod
  34. expect_fail tests/t_bool.mod
  35. expect_fail tests/t_rel.mod
  36. expect_fail tests/t_cond.mod
  37. expect_fail tests/t_field.mod
  38. expect_fail tests/t_index.mod
  39. expect_fail tests/t_ptr.mod
  40. expect_fail tests/t_for.mod
  41. expect_fail tests/t_call.mod
  42. expect_fail tests/t_call2.mod
  43. expect_fail tests/t_return.mod
  44. expect_fail tests/t_exit.mod
  45. expect_dump tests/showcase.mod "Module Showcase"
  46. expect_dump tests/showcase.mod "Proc Work"
  47. expect_dump tests/showcase.mod "CallExpr"
  48. expect_dump tests/showcase.mod "Field q"
  49. expect_dump tests/showcase.mod "Int 255"
  50. expect_dump tests/ok_proc.mod "Proc P"
  51. echo "--- $pass passed, $fail failed ---"
  52. [ "$fail" -eq 0 ]