run-tests-exp.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/bin/sh
  2. #
  3. # This is plain shell variant of run-tests script, which uses .exp files
  4. # as generated by run-tests --write-exp. It is useful to run testsuite
  5. # on embedded systems which don't have CPython3.
  6. #
  7. RM="rm -f"
  8. MP_PY=micropython
  9. numtests=0
  10. numtestcases=0
  11. numpassed=0
  12. numskipped=0
  13. numfailed=0
  14. nameskipped=
  15. namefailed=
  16. if [ $# -eq 0 ]
  17. then
  18. tests="basics/*.py micropython/*.py float/*.py import/*.py io/*.py misc/*.py unicode/*.py extmod/*.py unix/*.py"
  19. else
  20. tests="$@"
  21. fi
  22. for infile in $tests
  23. do
  24. basename=`basename $infile .py`
  25. outfile=${basename}.py.out
  26. expfile=$infile.exp
  27. $MP_PY $infile > $outfile
  28. numtestcases=$(expr $numtestcases + $(cat $expfile | wc -l))
  29. if grep -q "SKIP\|SyntaxError: invalid micropython decorator" $outfile
  30. then
  31. # we don't count tests that explicitly ask to be skipped
  32. # we don't count tests that fail due to unsupported decorator
  33. echo "skip $infile"
  34. $RM $outfile
  35. numskipped=$(expr $numskipped + 1)
  36. nameskipped="$nameskipped $basename"
  37. else
  38. diff --brief $expfile $outfile > /dev/null
  39. if [ $? -eq 0 ]
  40. then
  41. echo "pass $infile"
  42. $RM $outfile
  43. numpassed=$(expr $numpassed + 1)
  44. else
  45. echo "FAIL $infile"
  46. numfailed=$(expr $numfailed + 1)
  47. namefailed="$namefailed $basename"
  48. fi
  49. fi
  50. numtests=$(expr $numtests + 1)
  51. done
  52. echo "$numtests tests performed ($numtestcases individual testcases)"
  53. echo "$numpassed tests passed"
  54. if [ $numskipped != 0 ]
  55. then
  56. echo "$numskipped tests skipped -$nameskipped"
  57. fi
  58. if [ $numfailed != 0 ]
  59. then
  60. echo "$numfailed tests failed -$namefailed"
  61. exit 1
  62. else
  63. exit 0
  64. fi