(CommandList children: [ (C {(cd)} { (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /) ("*")}) spids: [6 11] ) } ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fails) op:Equal rhs:{(0)} spids:[13])] spids: [13] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:i) op:Equal rhs:{(0)} spids:[16])] spids: [16] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tests) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [(C {(ls)} {(valid/) (Lit_Other "*") (.json)}) (C {(wc)} {(-l)})] negated: False ) ] ) left_token: <Left_Backtick "`"> spids: [20 32] ) } spids: [19] ) ] spids: [19] ) (C {(echo)} { (DQ (1..) (BracedVarSub token: <VSub_Name tests> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("* ")}) spids: [38 42] ) ) } ) (ForEach iter_name: input iter_words: [{(valid/) (Lit_Other "*") (.json)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name input> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.json)}) spids: [60 64] ) (.parsed) ) } spids: [58] ) ] spids: [58] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:i) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [70 75] ) } spids: [69] ) ] spids: [69] ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (SimpleCommand words: [{(../JSON.sh)}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name "$input"))} spids: [84] ) ] ) (C {(diff)} {(-u)} {(-)} {(DQ ($ VSub_Name "$expected"))}) ] negated: True ) ] action: [ (C {(echo)} {(DQ ("not ok ") ($ VSub_Name "$i") (" - ") ($ VSub_Name "$input"))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:fails) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:fails) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [118 123] ) } spids: [117] ) ] spids: [117] ) ] spids: [-1 104] ) ] else_action: [ (C {(echo)} {(DQ ("ok ") ($ VSub_Name "$i") (" - ") ($ VSub_Name "$input"))}) ] spids: [126 140] ) ] spids: [55 142] ) spids: [50 -1] ) (C {(echo)} {(DQ ($ VSub_Name "$fails") (" test(s) failed"))}) (C {(exit)} {($ VSub_Name "$fails")}) ] )