(CommandList children: [ (C {(set)} {(-eu)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RUNFILES) op: Equal rhs: { (BracedVarSub token: <VSub_Name RUNFILES> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (C { (CommandSubPart command_list: (CommandList children: [ (C {(cd)} { (CommandSubPart command_list: (CommandList children: [ (C {(dirname)} { (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr: (ArithWord w: {(Lit_Digits 0)} ) ) spids: [66 71] ) } ) ] ) left_token: <Left_CommandSub "$("> spids: [63 72] ) } ) ] ) left_token: <Left_CommandSub "$("> spids: [60 73] ) } ) terminator: <Op_Semi ";"> ) (C {(pwd)}) ] ) left_token: <Left_CommandSub "$("> spids: [59 77] ) } ) spids: [56 78] ) } spids: [55] ) ] spids: [55] ) (C {(source)} {(DQ (${ VSub_Name RUNFILES) (/examples/shell/lib.sh))}) (FuncDef name: test_output body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTPUT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(showfile)})]) left_token: <Left_CommandSub "$("> spids: [99 101] ) } spids: [98] ) ] spids: [98] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EXPECTED_OUTPUT) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(cat)} {(DQ (${ VSub_Name RUNFILES) (/examples/shell/data/test_file.txt))} ) ] ) left_token: <Left_CommandSub "$("> spids: [105 114] ) } spids: [104] ) ] spids: [104] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(DQ (${ VSub_Name OUTPUT))} {(KW_Bang "!") (Lit_Other "=")} {(DQ (${ VSub_Name EXPECTED_OUTPUT))} {(Lit_Other "]")} ) terminator: <Op_Semi ";"> ) ] action: [(C {(exit)} {(1)})] spids: [-1 140] ) ] spids: [-1 152] ) ] spids: [95] ) spids: [91 94] ) (C {(test_output)}) ] )