(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'test automatic tag following' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:45) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\techo ichi >file &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\tgit commit -m L &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\tL=$(git rev-parse --verify HEAD) &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\n' span_id:51) (Token id:Id.Lit_Chars val:'\t(\n' span_id:52) (Token id:Id.Lit_Chars val:'\t\tmkdir cloned &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\tgit init-db &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\t\tgit remote add -f origin ..\n' span_id:56) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\n' span_id:58) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\techo A >file &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\tA=$(git rev-parse --verify HEAD)\n' span_id:63) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:U) op: assign_op.Equal rhs: {(UPLOAD_LOG)} spids: [67] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:UPATH) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:72) command_list: (command.CommandList children:[(C {(pwd)})]) ) (/) ($ Id.VSub_DollarName '$U') ) } spids: [70] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:83))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id:Id.Lit_Chars val:'cat - <<EOF >expect\n' span_id:88) (Token id:Id.Lit_Chars val:'want $A\n' span_id:89) (Token id:Id.Lit_Chars val:'EOF\n' span_id:90) ) } ) (command.ShFunction name: get_needs body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-s)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(perl)} {(-alne)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:118) (Token id: Id.Lit_Chars val: '\t\tnext unless $F[1] eq "upload-pack<";\n' span_id: 119 ) (Token id:Id.Lit_Chars val:'\t\tlast if $F[2] eq "0000";\n' span_id:120) (Token id: Id.Lit_Chars val: '\t\tprint $F[2], " ", $F[3];\n' span_id: 121 ) (Token id:Id.Lit_Chars val:'\t' span_id:122) ) } {(DQ ($ Id.VSub_Number '$1'))} ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch A (new commit : 1 connection)' span_id:135))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\trm -f $U &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\t(\n' span_id:141) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\t\tGIT_TRACE_PACKET=$UPATH git fetch &&\n' span_id:143) (Token id: Id.Lit_Chars val: '\t\ttest $A = $(git rev-parse --verify origin/master)\n' span_id: 144 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\tget_needs $U >actual &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:147) ) } ) (C {(test_expect_success)} {(DQ ('create tag T on A, create C on branch cat'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:158) (Token id:Id.Lit_Chars val:'\tgit tag -a -m tag1 tag1 $A &&\n' span_id:159) (Token id:Id.Lit_Chars val:'\tT=$(git rev-parse --verify tag1) &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\n' span_id:161) (Token id:Id.Lit_Chars val:'\tgit checkout -b cat &&\n' span_id:162) (Token id:Id.Lit_Chars val:'\techo C >file &&\n' span_id:163) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:164) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:165) (Token id:Id.Lit_Chars val:'\tC=$(git rev-parse --verify HEAD) &&\n' span_id:166) (Token id:Id.Lit_Chars val:'\tgit checkout master\n' span_id:167) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:174))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:178) (Token id:Id.Lit_Chars val:'cat - <<EOF >expect\n' span_id:179) (Token id:Id.Lit_Chars val:'want $C\n' span_id:180) (Token id:Id.Lit_Chars val:'want $T\n' span_id:181) (Token id:Id.Lit_Chars val:'EOF\n' span_id:182) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch C, T (new branch, tag : 1 connection)' span_id:189))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:193) (Token id:Id.Lit_Chars val:'\trm -f $U &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\t(\n' span_id:195) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:196) (Token id:Id.Lit_Chars val:'\t\tGIT_TRACE_PACKET=$UPATH git fetch &&\n' span_id:197) (Token id: Id.Lit_Chars val: '\t\ttest $C = $(git rev-parse --verify origin/cat) &&\n' span_id: 198 ) (Token id:Id.Lit_Chars val:'\t\ttest $T = $(git rev-parse --verify tag1) &&\n' span_id:199) (Token id: Id.Lit_Chars val: '\t\ttest $A = $(git rev-parse --verify tag1^0)\n' span_id: 200 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\tget_needs $U >actual &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:203) ) } ) (C {(test_expect_success)} {(DQ ('create commits O, B, tag S on B'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:214) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:215) (Token id:Id.Lit_Chars val:'\techo O >file &&\n' span_id:216) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:217) (Token id:Id.Lit_Chars val:'\tgit commit -m O &&\n' span_id:218) (Token id:Id.Lit_Chars val:'\n' span_id:219) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:220) (Token id:Id.Lit_Chars val:'\techo B >file &&\n' span_id:221) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:222) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:223) (Token id:Id.Lit_Chars val:'\tB=$(git rev-parse --verify HEAD) &&\n' span_id:224) (Token id:Id.Lit_Chars val:'\n' span_id:225) (Token id:Id.Lit_Chars val:'\tgit tag -a -m tag2 tag2 $B &&\n' span_id:226) (Token id:Id.Lit_Chars val:'\tS=$(git rev-parse --verify tag2)\n' span_id:227) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:234))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:238) (Token id:Id.Lit_Chars val:'cat - <<EOF >expect\n' span_id:239) (Token id:Id.Lit_Chars val:'want $B\n' span_id:240) (Token id:Id.Lit_Chars val:'want $S\n' span_id:241) (Token id:Id.Lit_Chars val:'EOF\n' span_id:242) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch B, S (commit and tag : 1 connection)' span_id:249))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:253) (Token id:Id.Lit_Chars val:'\trm -f $U &&\n' span_id:254) (Token id:Id.Lit_Chars val:'\t(\n' span_id:255) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\tGIT_TRACE_PACKET=$UPATH git fetch &&\n' span_id:257) (Token id: Id.Lit_Chars val: '\t\ttest $B = $(git rev-parse --verify origin/master) &&\n' span_id: 258 ) (Token id:Id.Lit_Chars val:'\t\ttest $B = $(git rev-parse --verify tag2^0) &&\n' span_id:259) (Token id: Id.Lit_Chars val: '\t\ttest $S = $(git rev-parse --verify tag2)\n' span_id: 260 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:261) (Token id:Id.Lit_Chars val:'\tget_needs $U >actual &&\n' span_id:262) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:263) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect' span_id:270))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:274) (Token id:Id.Lit_Chars val:'cat - <<EOF >expect\n' span_id:275) (Token id:Id.Lit_Chars val:'want $B\n' span_id:276) (Token id:Id.Lit_Chars val:'want $S\n' span_id:277) (Token id:Id.Lit_Chars val:'EOF\n' span_id:278) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'new clone fetch master and tags' span_id:285))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:289) (Token id: Id.Lit_Chars val: '\ttest_might_fail git branch -D cat &&\n' span_id: 290 ) (Token id:Id.Lit_Chars val:'\trm -f $U &&\n' span_id:291) (Token id:Id.Lit_Chars val:'\t(\n' span_id:292) (Token id:Id.Lit_Chars val:'\t\tmkdir clone2 &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\t\tcd clone2 &&\n' span_id:294) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:295) (Token id:Id.Lit_Chars val:'\t\tgit remote add origin .. &&\n' span_id:296) (Token id:Id.Lit_Chars val:'\t\tGIT_TRACE_PACKET=$UPATH git fetch &&\n' span_id:297) (Token id: Id.Lit_Chars val: '\t\ttest $B = $(git rev-parse --verify origin/master) &&\n' span_id: 298 ) (Token id:Id.Lit_Chars val:'\t\ttest $S = $(git rev-parse --verify tag2) &&\n' span_id:299) (Token id: Id.Lit_Chars val: '\t\ttest $B = $(git rev-parse --verify tag2^0) &&\n' span_id: 300 ) (Token id:Id.Lit_Chars val:'\t\ttest $T = $(git rev-parse --verify tag1) &&\n' span_id:301) (Token id: Id.Lit_Chars val: '\t\ttest $A = $(git rev-parse --verify tag1^0)\n' span_id: 302 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:303) (Token id:Id.Lit_Chars val:'\tget_needs $U >actual &&\n' span_id:304) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:305) ) } ) (C {(test_done)}) ] )