(List (= scope= flags=0 words=[] bindings=[('RM', {[DQ [LIT_CHARS "rm -f"]]})]) (= scope= flags=0 words=[] bindings=[('MP_PY', {[LIT_CHARS micropython]})]) (= scope= flags=0 words=[] bindings=[('numtests', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('numtestcases', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('numpassed', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('numfailed', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('namefailed', {[SQ ]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('tests', {[DQ [LIT_CHARS "basics/*.py micropython/*.py float/*.py import/*.py io/*.py misc/*.py"]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('tests', {[DQ [VarSub @]]})]) ) (For infile [{[VarSub tests]}]) (List (= scope= flags=0 words=[] bindings=[('basename', {[ComSub (Com {[LIT_CHARS basename]} {[VarSub infile]} {[LIT_CHARS .py]})]})]) (= scope= flags=0 words=[] bindings=[('outfile', {[VarSub basename] [LIT_CHARS .out]})]) (= scope= flags=0 words=[] bindings=[('expfile', {[VarSub infile] [LIT_CHARS .exp]})]) (Com {[VarSub MP_PY]} {[VarSub infile]} < (FilenameRedirectNode filename={[VarSub outfile]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('numtestcases', {[ComSub (Com {[LIT_CHARS expr]} {[VarSub numtestcases]} {[LIT_OTHER "+"]} {[ComSub (Pipeline (Com {[LIT_CHARS cat]} {[VarSub expfile]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]})]) (Com {[LIT_CHARS diff]} {[LIT_CHARS --brief]} {[VarSub expfile]} {[VarSub outfile]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub ?]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "pass "][VarSub infile]]} ) (Com {[VarSub RM]} {[VarSub outfile]} ) (= scope= flags=0 words=[] bindings=[('numpassed', {[ComSub (Com {[LIT_CHARS expr]} {[VarSub numpassed]} {[LIT_OTHER "+"]} {[LIT_CHARS 1]})]})]) ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "FAIL "][VarSub infile]]} ) (= scope= flags=0 words=[] bindings=[('numfailed', {[ComSub (Com {[LIT_CHARS expr]} {[VarSub numfailed]} {[LIT_OTHER "+"]} {[LIT_CHARS 1]})]})]) (= scope= flags=0 words=[] bindings=[('namefailed', {[DQ [VarSub namefailed][LIT_CHARS " "][VarSub basename]]})]) ) ) (= scope= flags=0 words=[] bindings=[('numtests', {[ComSub (Com {[LIT_CHARS expr]} {[VarSub numtests]} {[LIT_OTHER "+"]} {[LIT_CHARS 1]})]})]) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub numtests][LIT_CHARS " tests performed ("][VarSub numtestcases][LIT_CHARS " individual testcases)"]]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub numpassed][LIT_CHARS " tests passed"]]} ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub numfailed]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub numfailed][LIT_CHARS " tests failed -"][VarSub namefailed]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (ElseTrue) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) )