(List (Com {[LIT_CHARS cd]} {[VarSub 0 transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]} ) (= scope= flags=0 words=[] bindings=[('fails', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('tests', {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[LIT_CHARS invalid/] [LIT_OTHER "*"]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS 1..][VarSub tests transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "* "]}]]]} ) (For input [{[LIT_CHARS invalid/] [LIT_OTHER "*"]}]) (List (= 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 (Com {[LIT_CHARS ../JSON.sh]} < (FilenameRedirectNode filename={[DQ [VarSub input]]} 0), (FilenameRedirectNode filename={[LIT_CHARS /tmp/JSON.sh_outlog]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /tmp/JSON.sh_errlog]} "> 2), > ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "not ok "][VarSub i][LIT_CHARS " - cat "][VarSub input][LIT_CHARS " | ../JSON.sh should fail"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "OUTPUT WAS >>>"]]} ) (Com {[LIT_CHARS cat]} {[LIT_CHARS /tmp/JSON.sh_outlog]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "<<<"]]} ) (= 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) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ok "][VarSub i][LIT_CHARS " - "][VarSub input][LIT_CHARS " was rejected"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#"]]} {[ComSub (Com {[LIT_CHARS cat]} {[LIT_CHARS /tmp/JSON.sh_errlog]})]} ) ) ) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub fails][LIT_CHARS " test(s) failed"]]} ) (Com {[LIT_CHARS exit]} {[VarSub fails]} ) )