(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'common tail optimization'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:z) op:Equal rhs:{(zzzzzzzz)} spids:[15])] spids: [15] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:z) op: Equal rhs: { (DQ ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ) } spids: [22] ) ] spids: [22] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:z) op: Equal rhs: { (DQ ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ) } spids: [38] ) ] spids: [38] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:z) op: Equal rhs: {(DQ ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z') ($ VSub_Name '$z'))} spids: [54] ) ] spids: [54] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:z2047) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$z'))} {(Lit_Other ':')} {(SQ <'.\\(.*\\)'>)}) ] ) left_token: <Left_CommandSub '$('> spids: [67 79] ) } spids: [66] ) ] spids: [66] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:x) op:Equal rhs:{(zzzzzzzzzz)} spids:[87])] spids: [87] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:y) op: Equal rhs: { (DQ ($ VSub_Name '$x') ($ VSub_Name '$x') ($ VSub_Name '$x') ($ VSub_Name '$x') ($ VSub_Name '$x') ($ VSub_Name '$x') ($ VSub_Name '$x') ($ VSub_Name '$x') ($ VSub_Name '$x') ($ VSub_Name '$x') ) } spids: [94] ) ] spids: [94] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:z) op: Equal rhs: { (DQ ($ VSub_Name '$y') ($ VSub_Name '$y') ($ VSub_Name '$y') ($ VSub_Name '$y') ($ VSub_Name '$y') ($ VSub_Name '$y') ($ VSub_Name '$y') ($ VSub_Name '$y') ($ VSub_Name '$y') ($ VSub_Name '$y') ) } spids: [112] ) ] spids: [112] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:z1000) op:Equal rhs:{($ VSub_Name '$z')} spids:[130])] spids: [130] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:z100) op:Equal rhs:{($ VSub_Name '$y')} spids:[133])] spids: [133] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:z10) op:Equal rhs:{($ VSub_Name '$x')} spids:[136])] spids: [136] ) (FuncDef name: zs body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [147] ) ] spids: [147] ) (While cond: [(C {(test)} {(DQ ($ VSub_Name '$count'))} {(-ge)} {(1000)})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$count')}) right: (ArithWord w:{(Lit_Digits 1000)}) ) spids: [170 177] ) } spids: [169] ) ] spids: [169] ) (C {(printf)} {(DQ ('%s'))} {($ VSub_Name '$z1000')}) ] spids: [166 189] ) ) (While cond: [(C {(test)} {(DQ ($ VSub_Name '$count'))} {(-ge)} {(100)})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$count')}) right: (ArithWord w:{(Lit_Digits 100)}) ) spids: [209 216] ) } spids: [208] ) ] spids: [208] ) (C {(printf)} {(DQ ('%s'))} {($ VSub_Name '$z100')}) ] spids: [205 228] ) ) (While cond: [(C {(test)} {(DQ ($ VSub_Name '$count'))} {(-ge)} {(10)})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$count')}) right: (ArithWord w:{(Lit_Digits 10)}) ) spids: [248 255] ) } spids: [247] ) ] spids: [247] ) (C {(printf)} {(DQ ('%s'))} {($ VSub_Name '$z10')}) ] spids: [244 267] ) ) (While cond: [(C {(test)} {(DQ ($ VSub_Name '$count'))} {(-ge)} {(1)})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$count')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [287 294] ) } spids: [286] ) ] spids: [286] ) (C {(printf)} {(DQ (z))}) ] spids: [283 304] ) ) ] spids: [144] ) spids: [140 143] ) (FuncDef name: zc body: (BraceGroup children: [ (Sentence child: (C {(sed)} {(-e)} {(DQ ('/^index/d'))} {(-e)} {(DQ (s/) ($ VSub_Name '$z1000') (/Q/g))} {(-e)} {(DQ (s/QQQQQQQQQ/Z9000/g))} {(-e)} {(DQ (s/QQQQQQQQ/Z8000/g))} {(-e)} {(DQ (s/QQQQQQQ/Z7000/g))} {(-e)} {(DQ (s/QQQQQQ/Z6000/g))} {(-e)} {(DQ (s/QQQQQ/Z5000/g))} {(-e)} {(DQ (s/QQQQ/Z4000/g))} {(-e)} {(DQ (s/QQQ/Z3000/g))} {(-e)} {(DQ (s/QQ/Z2000/g))} {(-e)} {(DQ (s/Q/Z1000/g))} {(-e)} {(DQ (s/) ($ VSub_Name '$z100') (/Q/g))} {(-e)} {(DQ (s/QQQQQQQQQ/Z900/g))} {(-e)} {(DQ (s/QQQQQQQQ/Z800/g))} {(-e)} {(DQ (s/QQQQQQQ/Z700/g))} {(-e)} {(DQ (s/QQQQQQ/Z600/g))} {(-e)} {(DQ (s/QQQQQ/Z500/g))} {(-e)} {(DQ (s/QQQQ/Z400/g))} {(-e)} {(DQ (s/QQQ/Z300/g))} {(-e)} {(DQ (s/QQ/Z200/g))} {(-e)} {(DQ (s/Q/Z100/g))} {(-e)} {(DQ (s/000Z//g))} {(-e)} {(DQ (s/) ($ VSub_Name '$z10') (/Q/g))} {(-e)} {(DQ (s/QQQQQQQQQ/Z90/g))} {(-e)} {(DQ (s/QQQQQQQQ/Z80/g))} {(-e)} {(DQ (s/QQQQQQQ/Z70/g))} {(-e)} {(DQ (s/QQQQQQ/Z60/g))} {(-e)} {(DQ (s/QQQQQ/Z50/g))} {(-e)} {(DQ (s/QQQQ/Z40/g))} {(-e)} {(DQ (s/QQQ/Z30/g))} {(-e)} {(DQ (s/QQ/Z20/g))} {(-e)} {(DQ (s/Q/Z10/g))} {(-e)} {(DQ (s/00Z//g))} {(-e)} {(DQ (s/z/Q/g))} {(-e)} {(DQ (s/QQQQQQQQQ/Z9/g))} {(-e)} {(DQ (s/QQQQQQQQ/Z8/g))} {(-e)} {(DQ (s/QQQQQQQ/Z7/g))} {(-e)} {(DQ (s/QQQQQQ/Z6/g))} {(-e)} {(DQ (s/QQQQQ/Z5/g))} {(-e)} {(DQ (s/QQQQ/Z4/g))} {(-e)} {(DQ (s/QQQ/Z3/g))} {(-e)} {(DQ (s/QQ/Z2/g))} {(-e)} {(DQ (s/Q/Z1/g))} {(-e)} {(DQ (s/0Z//g))} ) terminator: <Op_Semi ';'> ) ] spids: [314] ) spids: [309 313] ) (FuncDef name: expect_pattern body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cnt) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [690] ) ] spids: [690] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('diff --git a/file-a') ($ VSub_Name '$cnt') (' b/file-a') ($ VSub_Name '$cnt') ('\n') ('--- a/file-a') ($ VSub_Name '$cnt') ('\n') ('+++ b/file-a') ($ VSub_Name '$cnt') ('\n') ('@@ -1 +1 @@\n') (-Z) (${ VSub_Name cnt) ('a\n') ('+Z') (${ VSub_Name cnt) ('A\n') ('diff --git a/file-b') ($ VSub_Name '$cnt') (' b/file-b') ($ VSub_Name '$cnt') ('\n') ('--- a/file-b') ($ VSub_Name '$cnt') ('\n') ('+++ b/file-b') ($ VSub_Name '$cnt') ('\n') ('@@ -1 +1 @@\n') ('-b\n') ('+B\n') ('diff --git a/file-c') ($ VSub_Name '$cnt') (' b/file-c') ($ VSub_Name '$cnt') ('\n') ('--- a/file-c') ($ VSub_Name '$cnt') ('\n') ('+++ b/file-c') ($ VSub_Name '$cnt') ('\n') ('@@ -1 +1 @@\n') (-cZ) ($ VSub_Name '$cnt') ('\n') (Lit_Other '\\') (' No newline at end of file\n') ('+CZ') ($ VSub_Name '$cnt') ('\n') (Lit_Other '\\') (' No newline at end of file\n') ('diff --git a/file-d') ($ VSub_Name '$cnt') (' b/file-d') ($ VSub_Name '$cnt') ('\n') ('--- a/file-d') ($ VSub_Name '$cnt') ('\n') ('+++ b/file-d') ($ VSub_Name '$cnt') ('\n') ('@@ -1 +1 @@\n') ('-d\n') ('+D\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [698] ) ] ) ] spids: [687] ) spids: [682 686] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sample) op: Equal rhs: {(SQ <'1023 1024 1025 2047 4095'>)} spids: [777] ) ] spids: [777] ) (C {(test_expect_success)} {(setup)} { (SQ <'\n'> <'\n'> <'\tfor n in $sample\n'> <'\tdo\n'> <'\t\t( zs $n ; echo a ) >file-a$n &&\n'> <'\t\t( echo b; zs $n; echo ) >file-b$n &&\n'> <'\t\t( printf c; zs $n ) >file-c$n &&\n'> <'\t\t( echo d; zs $n ) >file-d$n &&\n'> <'\n'> <'\t\tgit add file-a$n file-b$n file-c$n file-d$n &&\n'> <'\n'> <'\t\t( zs $n ; echo A ) >file-a$n &&\n'> <'\t\t( echo B; zs $n; echo ) >file-b$n &&\n'> <'\t\t( printf C; zs $n ) >file-c$n &&\n'> <'\t\t( echo D; zs $n ) >file-d$n &&\n'> <'\n'> <'\t\texpect_pattern $n || return 1\n'> <'\n'> <'\tdone >expect\n'> ) } ) (C {(test_expect_success)} {(SQ <'diff -U0'>)} { (SQ <'\n'> <'\n'> <'\tfor n in $sample\n'> <'\tdo\n'> <'\t\tgit diff -U0 file-?$n\n'> <'\tdone | zc >actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {(test_done)}) ] )