(CommandList children: [ (FuncDef name: test_breakpoint body: (BraceGroup children: [ (FuncDef name: _Dbg_errmsg body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errmsgs) op: PlusEqual rhs: {(ArrayLiteralPart words:[{(DQ ($ VSub_At "$@"))}])} spids: [27] ) ] spids: [27] ) ] spids: [24] ) spids: [20 23] ) (FuncDef name: _Dbg_msg body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: PlusEqual rhs: {(ArrayLiteralPart words:[{(DQ ($ VSub_At "$@"))}])} spids: [45] ) ] spids: [45] ) ] spids: [42] ) spids: [38 41] ) (FuncDef name: _Dbg_adjust_filename body: (BraceGroup children:[(C {(echo)} {($ VSub_Star "$*")})] spids:[60]) spids: [56 59] ) (FuncDef name: _Dbg_expand_filename body: (BraceGroup children:[(C {(echo)} {($ VSub_Star "$*")})] spids:[75]) spids: [71 74] ) (C {(typeset)} {(-a)} {(msgs)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [94] ) ] spids: [94] ) (C {(_Dbg_set_brkpt)}) (C {(assertNotEquals)} {(SQ <"set breakpoint no parameters">)} {(SQ <0>)} {(DQ ($ VSub_QMark "$?"))} ) (C {(_Dbg_set_brkpt)} {(1)} {(2)} {(3)} {(4)} {(5)}) (C {(assertNotEquals)} {(SQ <"set breakpoint too many parameter">)} {(SQ <0>)} {(DQ ($ VSub_QMark "$?"))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_Dbg_frame_last_lineno) op: Equal rhs: {(5)} spids: [156] ) ] spids: [156] ) (C {(_Dbg_set_brkpt)} {(test.sh)} {(5)} {(0)}) (C {(assertEquals)} {(SQ <"simple set breakpoint">)} {(SQ <"Breakpoint 1 set in file test.sh, line 5.">)} { (DQ (BracedVarSub token: <VSub_Name msgs> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [182 187] ) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [192] ) ] spids: [192] ) (C {(_Dbg_unset_brkpt)}) (C {(assertEquals)} {(SQ <"unset_brkpt no params invalid">)} {(SQ <0>)} {(DQ ($ VSub_QMark "$?"))} ) (C {(_Dbg_unset_brkpt)} {(1)} {(2)} {(3)}) (C {(assertEquals)} {(SQ <0>)} {(DQ ($ VSub_QMark "$?"))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [256] ) ] spids: [256] ) (C {(_Dbg_unset_brkpt)} {(test.sh)} {(5)}) (C {(assertEquals)} {(SQ <"valid unset_brkpt">)} {(SQ <1>)} {(DQ ($ VSub_QMark "$?"))}) (C {(assertEquals)} {(SQ <0>)} { (DQ (BracedVarSub token: <VSub_Name msgs> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [294 300] ) ) } ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [321] ) ] spids: [321] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errmsgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [326] ) ] spids: [326] ) (C {(_Dbg_enable_disable_brkpt)}) (C {(assertEquals)} {(SQ <enable_disable_brkpt>)} {(SQ <1>)} {(DQ ($ VSub_QMark "$?"))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [358] ) ] spids: [358] ) (C {(_Dbg_enable_disable_brkpt)} {(1)} {(SQ <enabled>)} {(1)}) (C {(assertEquals)} {(DQ ("enable_disable_brkpt enabled"))} {(DQ ("Breakpoint entry 1 doesn't exist, so nothing done."))} { (DQ (BracedVarSub token: <VSub_Name errmsgs> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [387 392] ) ) } ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [398] ) ] spids: [398] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errmsgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [403] ) ] spids: [403] ) (C {(_Dbg_set_brkpt)} {(test.sh)} {(6)} {(1)}) (C {(assertEquals)} {(SQ <"add 2nd breakpoint">)} {(SQ <"One-time breakpoint 2 set in file test.sh, line 6.">)} { (DQ (BracedVarSub token: <VSub_Name msgs> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [434 439] ) ) } ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [445] ) ] spids: [445] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errmsgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [450] ) ] spids: [450] ) (C {(_Dbg_enable_disable_brkpt)} {(1)} {(SQ <enabled>)} {(2)}) (C {(assertEquals)} {(SQ <"redundant 2nd breakpoint enable">)} {(SQ <"Breakpoint entry 2 already enabled, so nothing done.">)} { (DQ (BracedVarSub token: <VSub_Name errmsgs> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [479 484] ) ) } ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [490] ) ] spids: [490] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errmsgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [495] ) ] spids: [495] ) (C {(_Dbg_enable_disable_brkpt)} {(0)} {(SQ <enabled>)} {(2)}) (C {(assertEquals)} {(SQ <"Breakpoint entry 2 enabled.">)} { (DQ (BracedVarSub token: <VSub_Name msgs> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [518 523] ) ) } ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [529] ) ] spids: [529] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:errmsgs) op: Equal rhs: {(ArrayLiteralPart)} spids: [534] ) ] spids: [534] ) (C {(_Dbg_enable_disable_brkpt)} {(1)} {(SQ <disabled>)} {(2)}) (C {(assertEquals)} {(SQ <0>)} {(DQ ($ VSub_QMark "$?"))}) (C {(assertEquals)} {(SQ <"Breakpoint entry 2 disabled.">)} { (DQ (BracedVarSub token: <VSub_Name msgs> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [568 573] ) ) } ) (C {(_Dbg_clear_all_brkpt)}) ] spids: [13] ) spids: [9 12] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:abs_top_srcdir) op: Equal rhs: {(/src/external-vcs/sourceforge/bashdb)} spids: [584] ) ] spids: [584] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:abs_top_srcdir) op: Equal rhs: { (BracedVarSub token: <VSub_Name abs_top_srcdir> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(Lit_Slash /)}) spids: [591 595] ) (/) } spids: [590] ) ] spids: [590] ) (C {(.)} {(${ VSub_Name abs_top_srcdir) (test/unit/helper.sh)}) (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/init/pre.sh)}) (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/file.sh)}) (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/fns.sh)}) (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/journal.sh)}) (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/break.sh)}) (C {(.)} {($ VSub_Name "$abs_top_srcdir") (/lib/validate.sh)}) (C {(set)} {(--)}) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Number "$0")} right: {(${ VSub_Name BASH_SOURCE)} ) ) (C {(.)} {(${ VSub_Name shunit_file)}) ] op_id: Op_DAmp ) ] )