(CommandList children: [ (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:reset) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(sgr0)})]) left_token: <Left_CommandSub "$("> spids: [51 55] ) } spids: [50] ) ] spids: [48] ) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:bold) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(bold)})]) left_token: <Left_CommandSub "$("> spids: [60 64] ) } spids: [59] ) ] spids: [57] ) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:black) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(setaf)} {(0)})]) left_token: <Left_CommandSub "$("> spids: [69 75] ) } spids: [68] ) ] spids: [66] ) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:red) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(setaf)} {(1)})]) left_token: <Left_CommandSub "$("> spids: [80 86] ) } spids: [79] ) ] spids: [77] ) (Assignment keyword: Assign_Readonly pairs: [ (assign_pair lhs: (LhsName name:green) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(setaf)} {(2)})]) left_token: <Left_CommandSub "$("> spids: [91 97] ) } spids: [90] ) ] spids: [88] ) (FuncDef name: "kube::test::clear_all" body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (if_supports_resource) } {(DQ (rc))} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(kubectl)} {(delete)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [137 142] ) ) } {(rc)} {(--all)} {(--grace-period) (Lit_Other "=") (0)} {(--force)} ) ] spids: [-1 129] ) ] spids: [-1 156] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (if_supports_resource) } {(DQ (pods))} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(kubectl)} {(delete)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [183 188] ) ) } {(pods)} {(--all)} {(--grace-period) (Lit_Other "=") (0)} {(--force)} ) ] spids: [-1 175] ) ] spids: [-1 202] ) ] spids: [110] ) spids: [100 109] ) (FuncDef name: "kube::test::get_caller" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:levels) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(2)}) spids: [229 233] ) } spids: [228] ) ] spids: [226] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:caller_file) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name "$levels")})) spids: [240 245] ) ) } spids: [238] ) ] spids: [236] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:caller_line) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name BASH_LINENO> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name "$levels")}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [253 260] ) ) } spids: [251] ) ] spids: [249] ) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ (${ VSub_Name caller_file))})] ) left_token: <Left_CommandSub "$("> spids: [267 275] ) (":") (${ VSub_Name caller_line) ) } ) ] spids: [223] ) spids: [213 222] ) (FuncDef name: "kube::test::get_object_assert" body: (BraceGroup children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (object_assert) } {(1)} {(DQ ($ VSub_At "$@"))} ) ] spids: [316] ) spids: [306 315] ) (FuncDef name: "kube::test::wait_object_assert" body: (BraceGroup children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (object_assert) } {(10)} {(DQ ($ VSub_At "$@"))} ) ] spids: [364] ) spids: [354 363] ) (FuncDef name: "kube::test::object_assert" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:tries) op: Equal rhs: {($ VSub_Number "$1")} spids: [420] ) ] spids: [418] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:object) op: Equal rhs: {($ VSub_Number "$2")} spids: [426] ) ] spids: [424] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:request) op: Equal rhs: {($ VSub_Number "$3")} spids: [432] ) ] spids: [430] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: {($ VSub_Number "$4")} spids: [438] ) ] spids: [436] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:args) op: Equal rhs: { (BracedVarSub token: <VSub_Number 5> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{}) spids: [445 448] ) } spids: [444] ) ] spids: [442] ) (ForEach iter_name: j iter_words: [ { (CommandSubPart command_list: (CommandList children:[(C {(seq)} {(1)} {(${ VSub_Name tries)})]) left_token: <Left_CommandSub "$("> spids: [458 466] ) } ] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:res) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(kubectl)} {(get)} {(-a)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [483 488] ) ) } {(${ VSub_Name args)} {($ VSub_Name "$object")} {(-o)} {(go-template) (Lit_Other "=") (EscapedLiteralPart token: <Lit_EscapedChar "\\\""> ) ($ VSub_Name "$request") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) } ) ] ) left_token: <Left_CommandSub "$("> spids: [473 504] ) } spids: [472] ) ] spids: [472] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_Name "$res"))} right: {(Lit_Other "^") ($ VSub_Name "$expected") (Lit_Other "$")} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(-n)} {(${ VSub_Name green)}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (get_caller) } {(3)} ) ] ) left_token: <Left_CommandSub "$("> spids: [539 549] ) (": Successful get ") ($ VSub_Name "$object") (" ") ($ VSub_Name "$request") (": ") ($ VSub_Name "$res") ) } ) (C {(echo)} {(-n)} {(${ VSub_Name reset)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [-1 524] ) ] spids: [-1 573] ) (C {(echo)} { (DQ ("Waiting for Get ") ($ VSub_Name "$object") (" ") ($ VSub_Name "$request") (" ") ($ VSub_Name "$args") (": expected: ") ($ VSub_Name "$expected") (", got: ") ($ VSub_Name "$res") ) } ) (C {(sleep)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{(${ VSub_Name j)}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [594 601] ) } ) ] spids: [469 604] ) spids: [457 467] ) (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (get_caller) } {(3)} ) ] ) left_token: <Left_CommandSub "$("> spids: [621 631] ) (": FAIL!") ) } ) (C {(echo)} {(DQ ("Get ") ($ VSub_Name "$object") (" ") ($ VSub_Name "$request"))}) (C {(echo)} {(DQ (" Expected: ") ($ VSub_Name "$expected"))}) (C {(echo)} {(DQ (" Got: ") ($ VSub_Name "$res"))}) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [415] ) spids: [405 414] ) (FuncDef name: "kube::test::get_object_jsonpath_assert" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:object) op: Equal rhs: {($ VSub_Number "$1")} spids: [704] ) ] spids: [702] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:request) op: Equal rhs: {($ VSub_Number "$2")} spids: [710] ) ] spids: [708] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:expected) op: Equal rhs: {($ VSub_Number "$3")} spids: [716] ) ] spids: [714] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:res) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(kubectl)} {(get)} {(-a)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [732 737] ) ) } {($ VSub_Name "$object")} {(-o)} {(Lit_VarLike "jsonpath=") (EscapedLiteralPart token: <Lit_EscapedChar "\\\""> ) ($ VSub_Name "$request") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) } ) ] ) left_token: <Left_CommandSub "$("> spids: [722 748] ) } spids: [721] ) ] spids: [721] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_Name "$res"))} right: {(Lit_Other "^") ($ VSub_Name "$expected") (Lit_Other "$")} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(-n)} {(${ VSub_Name green)}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (get_caller) } ) ] ) left_token: <Left_CommandSub "$("> spids: [784 792] ) (": Successful get ") ($ VSub_Name "$object") (" ") ($ VSub_Name "$request") (": ") ($ VSub_Name "$res") ) } ) (C {(echo)} {(-n)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [-1 769] ) ] else_action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (get_caller) } ) ] ) left_token: <Left_CommandSub "$("> spids: [832 840] ) (": FAIL!") ) } ) (C {(echo)} {(DQ ("Get ") ($ VSub_Name "$object") (" ") ($ VSub_Name "$request"))}) (C {(echo)} {(DQ (" Expected: ") ($ VSub_Name "$expected"))}) (C {(echo)} {(DQ (" Got: ") ($ VSub_Name "$res"))}) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [816 896] ) ] spids: [699] ) spids: [689 698] ) (FuncDef name: "kube::test::describe_object_assert" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:resource) op: Equal rhs: {($ VSub_Number "$1")} spids: [916] ) ] spids: [914] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:object) op: Equal rhs: {($ VSub_Number "$2")} spids: [922] ) ] spids: [920] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:matches) op: Equal rhs: { (BracedVarSub token: <VSub_At "@"> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)})) spids: [929 933] ) } spids: [928] ) ] spids: [926] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(kubectl)} {(describe)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [946 951] ) ) } {($ VSub_Name "$resource")} {($ VSub_Name "$object")} ) ] ) left_token: <Left_CommandSub "$("> spids: [938 957] ) } spids: [937] ) ] spids: [937] ) (ForEach iter_name: match iter_words: [{(${ VSub_Name matches)}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child: (WordTest w: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(grep)} {(${ VSub_Name match)}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [981 995] ) } ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (get_caller) } ) ] ) left_token: <Left_CommandSub "$("> spids: [1016 1024] ) (": FAIL!") ) } ) (C {(echo)} { (DQ ("Describe ") ($ VSub_Name "$resource") (" ") ($ VSub_Name "$object") ) } ) (C {(echo)} {(DQ (" Expected Match: ") ($ VSub_Name "$match"))}) (C {(echo)} {(DQ (" Not found in:"))}) (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [-1 1000] ) ] spids: [-1 1086] ) ] spids: [972 1089] ) spids: [966 970] ) (C {(echo)} {(-n)} {(${ VSub_Name green)}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (get_caller) } ) ] ) left_token: <Left_CommandSub "$("> spids: [1105 1113] ) (": Successful describe ") ($ VSub_Name "$resource") (" ") ($ VSub_Name "$object") (":") ) } ) (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(echo)} {(-n)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [911] ) spids: [901 910] ) (FuncDef name: "kube::test::describe_object_events_assert" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:resource) op: Equal rhs: {($ VSub_Number "$1")} spids: [1160] ) ] spids: [1158] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:object) op: Equal rhs: {($ VSub_Number "$2")} spids: [1166] ) ] spids: [1164] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:showevents) op: Equal rhs: { (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (true))}) spids: [1173 1179] ) } spids: [1172] ) ] spids: [1170] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_z child: { (DQ (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )}) spids: [1190 1193] ) ) } ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(kubectl)} {(describe)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [1211 1216] ) ) } {($ VSub_Name "$resource")} {($ VSub_Name "$object")} ) ] ) left_token: <Left_CommandSub "$("> spids: [1203 1222] ) } spids: [1202] ) ] spids: [1202] ) ] spids: [-1 1199] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(kubectl)} {(describe)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [1237 1242] ) ) } {(DQ ("--show-events=") ($ VSub_Name "$showevents"))} {($ VSub_Name "$resource")} {($ VSub_Name "$object")} ) ] ) left_token: <Left_CommandSub "$("> spids: [1229 1253] ) } spids: [1228] ) ] spids: [1228] ) ] spids: [1225 1256] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_n child: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(grep)} { (DQ ("No events.") (EscapedLiteralPart token: <Lit_EscapedChar "\\|"> ) ("Events:") ) } ) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [1266 1282] ) } ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:has_events) op: Equal rhs: {(DQ (true))} spids: [1292] ) ] spids: [1290] ) ] spids: [-1 1287] ) ] else_action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:has_events) op: Equal rhs: {(DQ (false))} spids: [1303] ) ] spids: [1301] ) ] spids: [1298 1309] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$showevents")} right: {($ VSub_Name "$has_events")} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(-n)} {(${ VSub_Name green)}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (get_caller) } ) ] ) left_token: <Left_CommandSub "$("> spids: [1340 1348] ) (": Successful describe") ) } ) (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [-1 1325] ) ] else_action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (get_caller) } ) ] ) left_token: <Left_CommandSub "$("> spids: [1388 1396] ) (": FAIL") ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$showevents")} right: {(DQ (false))} ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(echo)} {(DQ (" Events information should not be described in:"))})] spids: [-1 1416] ) ] else_action: [(C {(echo)} {(DQ (" Events information not found in:"))})] spids: [1426 1436] ) (C {(echo)} {($ VSub_Name "$result")}) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [1372 1469] ) ] spids: [1155] ) spids: [1145 1154] ) (FuncDef name: "kube::test::describe_resource_assert" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:resource) op: Equal rhs: {($ VSub_Number "$1")} spids: [1489] ) ] spids: [1487] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:matches) op: Equal rhs: { (BracedVarSub token: <VSub_At "@"> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 2)})) spids: [1496 1500] ) } spids: [1495] ) ] spids: [1493] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(kubectl)} {(describe)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [1513 1518] ) ) } {($ VSub_Name "$resource")} ) ] ) left_token: <Left_CommandSub "$("> spids: [1505 1522] ) } spids: [1504] ) ] spids: [1504] ) (ForEach iter_name: match iter_words: [{(${ VSub_Name matches)}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child: (WordTest w: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(grep)} {(${ VSub_Name match)}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [1546 1560] ) } ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} {(DQ ("FAIL!"))}) (C {(echo)} {(DQ ("Describe ") ($ VSub_Name "$resource"))}) (C {(echo)} {(DQ (" Expected Match: ") ($ VSub_Name "$match"))}) (C {(echo)} {(DQ (" Not found in:"))}) (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [-1 1565] ) ] spids: [-1 1640] ) ] spids: [1537 1643] ) spids: [1531 1535] ) (C {(echo)} {(-n)} {(${ VSub_Name green)}) (C {(echo)} {(DQ ("Successful describe ") ($ VSub_Name "$resource") (":"))}) (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(echo)} {(-n)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [1484] ) spids: [1474 1483] ) (FuncDef name: "kube::test::describe_resource_events_assert" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:resource) op: Equal rhs: {($ VSub_Number "$1")} spids: [1703] ) ] spids: [1701] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:showevents) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (true))}) spids: [1710 1716] ) } spids: [1709] ) ] spids: [1707] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(kubectl)} {(describe)} { (DQ (BracedVarSub token: <VSub_Name kube_flags> bracket_op: (WholeArray op_id:Lit_At) spids: [1729 1734] ) ) } {(DQ ("--show-events=") ($ VSub_Name "$showevents"))} {($ VSub_Name "$resource")} ) ] ) left_token: <Left_CommandSub "$("> spids: [1721 1743] ) } spids: [1720] ) ] spids: [1720] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (WordTest w: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(grep)} { (DQ ("No events.") (EscapedLiteralPart token: <Lit_EscapedChar "\\|"> ) ("Events:") ) } ) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [1751 1767] ) } ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:has_events) op: Equal rhs: {(DQ (true))} spids: [1777] ) ] spids: [1775] ) ] spids: [-1 1772] ) ] else_action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:has_events) op: Equal rhs: {(DQ (false))} spids: [1788] ) ] spids: [1786] ) ] spids: [1783 1794] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$showevents")} right: {($ VSub_Name "$has_events")} ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(-n)} {(${ VSub_Name green)}) (C {(echo)} {(DQ ("Successful describe"))}) (C {(echo)} {(DQ ($ VSub_Name "$result"))}) (C {(echo)} {(-n)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [-1 1810] ) ] else_action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} {(DQ (FAIL))}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name "$showevents")} right: {(DQ (false))} ) ) terminator: <Op_Semi ";"> ) ] action: [(C {(echo)} {(DQ (" Events information should not be described in:"))})] spids: [-1 1885] ) ] else_action: [(C {(echo)} {(DQ (" Events information not found in:"))})] spids: [1895 1905] ) (C {(echo)} {($ VSub_Name "$result")}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [1850 1928] ) ] spids: [1698] ) spids: [1688 1697] ) (FuncDef name: "kube::test::if_sort_by_has_correct_order" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:array) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number "$1"))}) (C {(awk)} {(SQ <"{if(NR!=1) print $1}">)}) ] negated: False ) ] ) left_token: <Left_CommandSub "$("> spids: [1953 1966] ) } ] ) } spids: [1951] ) ] spids: [1949] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:var) op:Equal spids:[1972])] spids: [1970] ) (ForEach iter_name: i iter_words: [ { (DQ (BracedVarSub token: <VSub_Name array> bracket_op: (WholeArray op_id:Lit_At) spids: [1982 1987] ) ) } ] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:var) op: PlusEqual rhs: {(DQ ($ VSub_Name "$i") (":"))} spids: [1994] ) ] spids: [1994] ) ] spids: [1991 2001] ) spids: [1980 1989] ) (C {(kube) (Lit_Other ":") (Lit_Other ":") (test) (Lit_Other ":") (Lit_Other ":") (if_has_string) } {(DQ ($ VSub_Name "$var"))} { (DQ (BracedVarSub token: <VSub_At "@"> suffix_op: (Slice begin:(ArithWord w:{($ VSub_Pound "$#")})) spids: [2018 2022] ) ) } ) ] spids: [1946] ) spids: [1936 1945] ) (FuncDef name: "kube::test::if_has_string" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:message) op: Equal rhs: {($ VSub_Number "$1")} spids: [2043] ) ] spids: [2041] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:match) op: Equal rhs: {($ VSub_Number "$2")} spids: [2049] ) ] spids: [2047] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$message"))}) (C {(grep)} {(-q)} {(DQ ($ VSub_Name "$match"))}) ] negated: False ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ (Successful))}) (C {(echo)} {(DQ ("message:") ($ VSub_Name "$message"))}) (C {(echo)} {(DQ ("has:") ($ VSub_Name "$match"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [-1 2073] ) ] else_action: [ (C {(echo)} {(DQ ("FAIL!"))}) (C {(echo)} {(DQ ("message:") ($ VSub_Name "$message"))}) (C {(echo)} {(DQ ("has not:") ($ VSub_Name "$match"))}) (C {(caller)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [2104 2138] ) ] spids: [2038] ) spids: [2028 2037] ) (FuncDef name: "kube::test::if_has_not_string" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:message) op: Equal rhs: {($ VSub_Number "$1")} spids: [2158] ) ] spids: [2156] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:match) op: Equal rhs: {($ VSub_Number "$2")} spids: [2164] ) ] spids: [2162] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$message"))}) (C {(grep)} {(-q)} {(DQ ($ VSub_Name "$match"))}) ] negated: False ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ("FAIL!"))}) (C {(echo)} {(DQ ("message:") ($ VSub_Name "$message"))}) (C {(echo)} {(DQ ("has:") ($ VSub_Name "$match"))}) (C {(caller)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 2188] ) ] else_action: [ (C {(echo)} {(DQ (Successful))}) (C {(echo)} {(DQ ("message:") ($ VSub_Name "$message"))}) (C {(echo)} {(DQ ("has not:") ($ VSub_Name "$match"))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2222 2253] ) ] spids: [2153] ) spids: [2143 2152] ) (FuncDef name: "kube::test::if_empty_string" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:match) op: Equal rhs: {($ VSub_Number "$1")} spids: [2273] ) ] spids: [2271] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-n)} {(DQ ($ VSub_Name "$match"))} {(Lit_Other "]")}) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(DQ ($ VSub_Name "$match") (" is not empty"))}) (C {(caller)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 2290] ) ] else_action: [ (C {(echo)} {(DQ (Successful))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [2309 2324] ) ] spids: [2268] ) spids: [2258 2267] ) (FuncDef name: "kube::test::if_supports_resource" body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SUPPORTED_RESOURCES) op: Equal rhs: { (BracedVarSub token: <VSub_Name SUPPORTED_RESOURCES> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )}) spids: [2361 2366] ) } spids: [2360] ) ] spids: [2360] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REQUIRED_RESOURCE) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )}) spids: [2370 2375] ) } spids: [2369] ) ] spids: [2369] ) (ForEach iter_name: r iter_words: [ { (DQ (BracedVarSub token: <VSub_Name SUPPORTED_RESOURCES> bracket_op: (WholeArray op_id:Lit_At) spids: [2386 2391] ) ) } ] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Name r))} right: {(DQ ("*"))} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ (${ VSub_Name r))} right: {(DQ (${ VSub_Name REQUIRED_RESOURCE))} ) ) ) terminator: <Op_Semi ";"> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [-1 2433] ) ] spids: [-1 2441] ) ] spids: [2395 2444] ) spids: [2384 2393] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [2357] ) spids: [2347 2356] ) (FuncDef name: "kube::test::version::object_to_file" body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {($ VSub_Number "$1")} spids: [2471] ) ] spids: [2471] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:flags) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )}) spids: [2476 2481] ) } spids: [2475] ) ] spids: [2475] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {($ VSub_Number "$3")} spids: [2484] ) ] spids: [2484] ) (Pipeline children: [ (C {(kubectl)} {(version)} {($ VSub_Name "$flags")}) (C {(grep)} {(DQ ($ VSub_Name "$name") (" Version:"))}) (C {(sed)} {(-e)} {(s/) (DQ ($ VSub_Name "$name") (" Version: version.Info{")) (/) (SQ </>)} {(-e)} {(s/) (SQ <"}">) (/) (SQ </>)} {(-e)} {(s/) (SQ <", ">) (/) (SQ <",">) (/g)} {(-e)} {(s/) (SQ <":">) (/) (SQ <"=/g">)} {(-e)} {(s/) (SQ <"\"">) (/) (DQ ) (/g)} ) (SimpleCommand words: [{(tr)} {(Lit_Comma ",")} {(SQ <"\\n">)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ (${ VSub_Name file))} spids: [2574] ) ] ) ] negated: False ) ] spids: [2468] ) spids: [2455 2467] ) (FuncDef name: "kube::test::version::json_object_to_file" body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:flags) op: Equal rhs: {($ VSub_Number "$1")} spids: [2601] ) ] spids: [2601] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {($ VSub_Number "$2")} spids: [2605] ) ] spids: [2605] ) (Pipeline children: [ (C {(kubectl)} {(version)} {($ VSub_Name "$flags")} {(--output)} {(json)}) (C {(sed)} {(-e)} {(s/) (SQ <" ">) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <"\\\"">) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <"}">) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <"{">) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <"clientVersion:">) (/) (SQ <"clientVersion:,">) (/)} {(-e)} {(s/) (SQ <"serverVersion:">) (/) (SQ <"serverVersion:,">) (/)} ) (SimpleCommand words: [{(tr)} {(Lit_Comma ",")} {(SQ <"\\n">)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ (${ VSub_Name file))} spids: [2701] ) ] ) ] negated: False ) ] spids: [2598] ) spids: [2585 2597] ) (FuncDef name: "kube::test::version::json_client_server_object_to_file" body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:flags) op: Equal rhs: {($ VSub_Number "$1")} spids: [2728] ) ] spids: [2728] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {($ VSub_Number "$2")} spids: [2732] ) ] spids: [2732] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {($ VSub_Number "$3")} spids: [2736] ) ] spids: [2736] ) (Pipeline children: [ (C {(kubectl)} {(version)} {($ VSub_Name "$flags")} {(--output)} {(json)}) (C {(jq)} {(-r)} {(DQ (.) (${ VSub_Name name))}) (SimpleCommand words: [ {(sed)} {(-e)} {(s/) (SQ <"\\\"">) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <"}">) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <"{">) (/) (SQ ) (/g)} {(-e)} {(/) (Lit_Other "^") (Lit_Other "$") (/d)} {(-e)} {(s/) (SQ <",">) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <":">) (/) (SQ <"=">) (/g)} ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ (${ VSub_Name file))} spids: [2830] ) ] ) ] negated: False ) ] spids: [2725] ) spids: [2712 2724] ) (FuncDef name: "kube::test::version::yaml_object_to_file" body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:flags) op: Equal rhs: {($ VSub_Number "$1")} spids: [2857] ) ] spids: [2857] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {($ VSub_Number "$2")} spids: [2861] ) ] spids: [2861] ) (Pipeline children: [ (C {(kubectl)} {(version)} {($ VSub_Name "$flags")} {(--output)} {(yaml)}) (SimpleCommand words: [ {(sed)} {(-e)} {(s/) (SQ <" ">) (/) (SQ ) (/g)} {(-e)} {(s/) (SQ <"\\\"">) (/) (SQ ) (/g)} {(-e)} {(/) (Lit_Other "^") (Lit_Other "$") (/d)} ] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ (${ VSub_Name file))} spids: [2908] ) ] ) ] negated: False ) ] spids: [2854] ) spids: [2841 2853] ) (FuncDef name: "kube::test::version::diff_assert" body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:original) op: Equal rhs: {($ VSub_Number "$1")} spids: [2937] ) ] spids: [2935] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:comparator) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ (eq))}) spids: [2944 2950] ) } spids: [2943] ) ] spids: [2941] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:latest) op: Equal rhs: {($ VSub_Number "$3")} spids: [2955] ) ] spids: [2953] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:diff_msg) op: Equal rhs: { (BracedVarSub token: <VSub_Number 4> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(DQ )}) spids: [2962 2967] ) } spids: [2961] ) ] spids: [2959] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:res) op:Equal rhs:{(DQ )} spids:[2972])] spids: [2970] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(KW_Bang "!")} {(-f)} {($ VSub_Name "$original")} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} {(DQ ("FAIL! ") (${ VSub_Name diff_msg))}) (C {(echo)} {(DQ ("the file '") (${ VSub_Name original) ("' does not exit"))}) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 2991] ) ] spids: [-1 3050] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(KW_Bang "!")} {(-f)} {($ VSub_Name "$latest")} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} {(DQ ("FAIL! ") (${ VSub_Name diff_msg))}) (C {(echo)} {(DQ ("the file '") (${ VSub_Name latest) ("' does not exit"))}) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 3067] ) ] spids: [-1 3126] ) (SimpleCommand words: [{(sort)} {(${ VSub_Name original)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ (${ VSub_Name original) (.sorted))} spids: [3136] ) ] ) (SimpleCommand words: [{(sort)} {(${ VSub_Name latest)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ (${ VSub_Name latest) (.sorted))} spids: [3152] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$comparator"))} {(Lit_Other "=") (Lit_Other "=")} {(DQ (eq))} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(diff)} {(-iwB)} {(${ VSub_Name original) (.sorted)} {(${ VSub_Name latest) (.sorted)} ) ] ) left_token: <Left_CommandSub "$("> spids: [3189 3203] ) ) } {(Lit_Other "=") (Lit_Other "=")} {(DQ )} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(-n)} {(${ VSub_Name green)}) (C {(echo)} {(DQ ("Successful: ") (${ VSub_Name diff_msg))}) (C {(echo)} {(-n)} {(${ VSub_Name reset)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [-1 3216] ) ] else_action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} {(DQ ("FAIL! ") (${ VSub_Name diff_msg))}) (C {(echo)} {(DQ (" Expected: "))}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(${ VSub_Name original)})] ) left_token: <Left_CommandSub "$("> spids: [3285 3291] ) ) } ) (C {(echo)} {(DQ (" Got: "))}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(${ VSub_Name latest)})] ) left_token: <Left_CommandSub "$("> spids: [3305 3311] ) ) } ) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [3252 3340] ) ] spids: [-1 3181] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(KW_Bang "!")} {(-z)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(diff)} {(-iwB)} {(${ VSub_Name original) (.sorted)} {(${ VSub_Name latest) (.sorted)} ) ] ) left_token: <Left_CommandSub "$("> spids: [3355 3369] ) ) } {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} {(-n)} {(${ VSub_Name green)}) (C {(echo)} {(DQ ("Successful: ") (${ VSub_Name diff_msg))}) (C {(echo)} {(-n)} {(${ VSub_Name reset)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [-1 3376] ) ] else_action: [ (C {(echo)} {(${ VSub_Name bold) (${ VSub_Name red)}) (C {(echo)} {(DQ ("FAIL! ") (${ VSub_Name diff_msg))}) (C {(echo)} {(DQ (" Expected: "))}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(${ VSub_Name original)})] ) left_token: <Left_CommandSub "$("> spids: [3445 3451] ) ) } ) (C {(echo)} {(DQ (" Got: "))}) (C {(echo)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(${ VSub_Name latest)})] ) left_token: <Left_CommandSub "$("> spids: [3465 3471] ) ) } ) (C {(echo)} {(${ VSub_Name reset) (${ VSub_Name red)}) (C {(caller)}) (C {(echo)} {(${ VSub_Name reset)}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3412 3500] ) ] spids: [3343 3503] ) ] spids: [2932] ) spids: [2919 2931] ) ] )