(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:test_description spids:[12]) op: Equal rhs: {(SQ <'log/show --expand-tabs'>)} spids: [12] ) ] spids: [12] ) (C {(.)} {(./test-lib.sh)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:HT spids:[23]) op: Equal rhs: {(DQ ('\t'))} spids: [23] ) ] spids: [23] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:title spids:[28]) op: Equal rhs: {(SQ <'tab indent at the beginning of the title line'>)} spids: [28] ) ] spids: [28] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:body spids:[33]) op: Equal rhs: {(SQ <'tab indent on a line in the body'>)} spids: [33] ) ] spids: [33] ) (command.FuncDef name: count_expand body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:expect spids:[50]) op: Equal rhs: (word.EmptyWord) spids: [50] ) ] spids: [50] ) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:count spids:[53]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) right: (arith_expr.ArithWord w:{($ VSub_Number '$2')}) ) spids: [54 63] ) } spids: [53] ) ] spids: [53] ) terminator: <Op_Semi ';'> ) (command.WhileUntil keyword: <KW_While while> cond: [(C {(test)} {($ VSub_Name '$count')} {(-gt)} {(0)})] body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:expect spids:[84]) op: Equal rhs: {(DQ ($ VSub_Name '$expect') (' '))} spids: [84] ) ] spids: [84] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:count spids:[91]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithWord w:{($ VSub_Name '$count')}) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [92 101] ) } spids: [91] ) ] spids: [91] ) ] spids: [81 104] ) ) (C {(shift)} {(2)}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:count spids:[112]) op: Equal rhs: {($ VSub_Number '$1')} spids: [112] ) ] spids: [112] ) terminator: <Op_Semi ';'> ) (command.WhileUntil keyword: <KW_While while> cond: [(C {(test)} {($ VSub_Name '$count')} {(-gt)} {(0)})] body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:expect spids:[134]) op: Equal rhs: {(DQ ($ VSub_Name '$expect') ($ VSub_Name '$HT'))} spids: [134] ) ] spids: [134] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:count spids:[141]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithWord w:{($ VSub_Name '$count')}) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [142 151] ) } spids: [141] ) ] spids: [141] ) ] spids: [131 154] ) ) (C {(shift)}) (command.Case to_match: {(DQ (' ') ($ VSub_Star '$*') (' '))} arms: [ (case_arm pat_list: [{(Lit_Other '*') (SQ <' --pretty=short '>) (Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:line spids:[184]) op: Equal rhs: {($ VSub_Name '$title')} spids: [184] ) ] spids: [184] ) ] spids: [176 181 187 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:line spids:[194]) op: Equal rhs: {($ VSub_Name '$body')} spids: [194] ) ] spids: [194] ) ] spids: [190 191 197 16777215] ) ] spids: [165 173 200] ) (command.Pipeline children: [ (command.BraceGroup children: [ (C {(echo)} {(DQ ('git show -s ') ($ VSub_Star '$*'))}) (C {(echo)} {(DQ ($ VSub_Name '$expect') ($ VSub_Name '$line'))}) ] spids: [220] ) (command.SimpleCommand words: [{(sed)} {(-e)} {(SQ <'s/ /./g'>)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect)})] ) ] negated: F ) (command.Pipeline children: [ (command.BraceGroup children: [ (C {(echo)} {(DQ ('git show -s ') ($ VSub_Star '$*'))}) (command.Pipeline children: [ (C {(git)} {(show)} {(-s)} {(DQ ($ VSub_At '$@'))}) (C {(sed)} {(-n)} {(-e)} { (DQ (/) ($ VSub_Name '$line') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (/p) ) } ) ] negated: F ) ] spids: [256] ) (command.SimpleCommand words: [{(sed)} {(-e)} {(SQ <'s/ /./g'>)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(actual)})] ) ] negated: F ) (C {(test_cmp)} {(expect)} {(actual)}) ] spids: [47] ) spids: [42 46] ) (command.FuncDef name: test_expand body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:fmt spids:[328]) op: Equal rhs: {($ VSub_Number '$1')} spids: [328] ) ] spids: [328] ) (command.Case to_match: {(DQ ($ VSub_Name '$fmt'))} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (Lit_Other '=') (raw)} {(Lit_Other '*') (Lit_Other '=') (short)} {(Lit_Other '*') (Lit_Other '=') (email)} ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:default spids:[359]) op: Equal rhs: {(DQ ('0 1'))} spids: [359] ) ] spids: [359] ) ] spids: [341 356 364 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:default spids:[371]) op: Equal rhs: {(DQ ('8 0'))} spids: [371] ) ] spids: [371] ) ] spids: [367 368 376 16777215] ) ] spids: [332 338 379] ) (command.Case to_match: {(DQ ($ VSub_Name '$fmt'))} arms: [ (case_arm pat_list: [{(Lit_Other '*') (Lit_Other '=') (email)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:in spids:[397]) op: Equal rhs: {(0)} spids: [397] ) ] spids: [397] ) ] spids: [391 394 400 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:in spids:[407]) op: Equal rhs: {(4)} spids: [407] ) ] spids: [407] ) ] spids: [403 404 410 16777215] ) ] spids: [382 388 413] ) (C {(test_expect_success)} { (DQ (expand/no-expand) (word_part.BracedVarSub token: <VSub_Name fmt> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonPlus arg_word: {(' for ') ($ VSub_Name '$fmt')} ) spids: [420 425] ) ) } { (SQ <'\n'> <'\t\tcount_expand $in $default $fmt &&\n'> <'\t\tcount_expand $in 8 0 $fmt --expand-tabs &&\n'> <'\t\tcount_expand $in 8 0 --expand-tabs $fmt &&\n'> <'\t\tcount_expand $in 8 0 $fmt --expand-tabs=8 &&\n'> <'\t\tcount_expand $in 8 0 --expand-tabs=8 $fmt &&\n'> <'\t\tcount_expand $in 0 1 $fmt --no-expand-tabs &&\n'> <'\t\tcount_expand $in 0 1 --no-expand-tabs $fmt &&\n'> <'\t\tcount_expand $in 0 1 $fmt --expand-tabs=0 &&\n'> <'\t\tcount_expand $in 0 1 --expand-tabs=0 $fmt &&\n'> <'\t\tcount_expand $in 4 0 $fmt --expand-tabs=4 &&\n'> <'\t\tcount_expand $in 4 0 --expand-tabs=4 $fmt\n'> <'\t'> ) } ) ] spids: [325] ) spids: [320 324] ) (C {(test_expect_success)} {(SQ <setup>)} { (SQ <'\n'> <'\ttest_tick &&\n'> <'\tsed -e "s/Q/$HT/g" <<-EOF >msg &&\n'> <'\tQ$title\n'> <'\n'> <'\tQ$body\n'> <'\tEOF\n'> <'\tgit commit --allow-empty -F msg\n'> ) } ) (C {(test_expand)} {(DQ )}) (C {(test_expand)} {(--pretty)}) (C {(test_expand)} {(--pretty) (Lit_Other '=') (short)}) (C {(test_expand)} {(--pretty) (Lit_Other '=') (medium)}) (C {(test_expand)} {(--pretty) (Lit_Other '=') (full)}) (C {(test_expand)} {(--pretty) (Lit_Other '=') (fuller)}) (C {(test_expand)} {(--pretty) (Lit_Other '=') (raw)}) (C {(test_expand)} {(--pretty) (Lit_Other '=') (email)}) (C {(test_done)}) ] )