(List (Com {[LIT_CHARS cd]} {[VarSub 0 transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]} ) (= scope= flags=0 words=[] bindings=[('tmp', {[VarSub TEMP test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS tmp]}]})]) (= scope= flags=0 words=[] bindings=[('tmp', {[VarSub tmp transform_ops=[VS_UNARY_DPERCENT {[LIT_SLASH /]}]] [LIT_CHARS /]})]) (= scope= flags=0 words=[] bindings=[('fails', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('i', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('tests', {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[LIT_CHARS valid/] [LIT_OTHER "*"] [LIT_CHARS .json]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS 1..][VarSub tests]]} ) (For input [{[LIT_CHARS valid/] [LIT_OTHER "*"] [LIT_CHARS .json]}]) (List (= scope= flags=0 words=[] bindings=[('input_file', {[VarSub input transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('expected', {[DQ [VarSub tmp][VarSub input_file transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS .json]}]][LIT_CHARS .no-head]]})]) (Com {[LIT_CHARS egrep]} {[LIT_CHARS -v]} {[SQ ]} < (FilenameRedirectNode filename={[VarSub input transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS .json]}]] [LIT_CHARS .parsed]} 0), (FilenameRedirectNode filename={[VarSub expected]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (If (Pipeline! (Com {[LIT_CHARS ../JSON.sh]} {[LIT_CHARS -n]} < (FilenameRedirectNode filename={[DQ [VarSub input]]} 0), > ) (Com {[LIT_CHARS diff]} {[LIT_CHARS -u]} {[LIT_CHARS -]} {[DQ [VarSub expected]]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "not ok "][VarSub i][LIT_CHARS " - "][VarSub input]]} ) (= scope= flags=0 words=[] bindings=[('fails', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub fails]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ok "][VarSub i][LIT_CHARS " - "][VarSub input]]} ) ) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub fails][LIT_CHARS " test(s) failed"]]} ) (Com {[LIT_CHARS exit]} {[VarSub fails]} ) )