#!/bin/sh # # This is plain shell variant of run-tests script, which uses .exp files # as generated by run-tests --write-exp. It is useful to run testsuite # on embedded systems which don't have CPython3. # setglobal RM = '"rm -f'" setglobal MP_PY = 'micropython' setglobal numtests = '0' setglobal numtestcases = '0' setglobal numpassed = '0' setglobal numskipped = '0' setglobal numfailed = '0' setglobal nameskipped = '' setglobal namefailed = '' if test $Argc -eq 0 { setglobal tests = '"basics/*.py micropython/*.py float/*.py import/*.py io/*.py misc/*.py unicode/*.py extmod/*.py unix/*.py'" } else { setglobal tests = @ARGV } for infile in [$tests] { setglobal basename = $[basename $infile .py] setglobal outfile = "$(basename).py.out" setglobal expfile = "$infile.exp" $MP_PY $infile > $outfile setglobal numtestcases = $[expr $numtestcases + $[cat $expfile | wc -l]] if grep -q "SKIP\|SyntaxError: invalid micropython decorator" $outfile { # we don't count tests that explicitly ask to be skipped # we don't count tests that fail due to unsupported decorator echo "skip $infile" $RM $outfile setglobal numskipped = $[expr $numskipped + 1] setglobal nameskipped = ""$nameskipped $basename"" } else { diff --brief $expfile $outfile > /dev/null if test $Status -eq 0 { echo "pass $infile" $RM $outfile setglobal numpassed = $[expr $numpassed + 1] } else { echo "FAIL $infile" setglobal numfailed = $[expr $numfailed + 1] setglobal namefailed = ""$namefailed $basename"" } } setglobal numtests = $[expr $numtests + 1] } echo "$numtests tests performed ($numtestcases individual testcases)" echo "$numpassed tests passed" if test $numskipped != 0 { echo "$numskipped tests skipped -$nameskipped" } if test $numfailed != 0 { echo "$numfailed tests failed -$namefailed" exit 1 } else { exit 0 }