(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: 'git rev-list trivial path optimization test\n' span_id: 6 ) (Token id:Id.Lit_Chars val:'\n' span_id:7) (Token id:Id.Lit_Chars val:' d/z1\n' span_id:8) (Token id: Id.Lit_Chars val: ' b0 b1\n' span_id: 9 ) (Token id:Id.Lit_Chars val:' o------------------------*----o master\n' span_id:10) (Token id: Id.Lit_Chars val: ' / /\n' span_id: 11 ) (Token id:Id.Lit_Chars val:' o---------o----o----o----o side\n' span_id:12) (Token id: Id.Lit_Chars val: ' a0 c0 c1 a1 c2\n' span_id: 13 ) (Token id:Id.Lit_Chars val:' d/f0 d/f1\n' span_id:14) (Token id:Id.Lit_Chars val:' d/z0\n' span_id:15) (Token id:Id.Lit_Chars val:'\n' span_id:16) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'\techo Hello >a &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tmkdir d &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\techo World >d/f &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\techo World >d/z &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit add a d &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit commit -m "Initial commit" &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify HEAD &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit tag initial\n' span_id:39) ) } ) (C {(test_expect_success)} {(path-optimization)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:49) (Token id: Id.Lit_Chars val: '\tcommit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) &&\n' span_id: 50 ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-list $commit | wc -l) = 2 &&\n' span_id:51) (Token id: Id.Lit_Chars val: '\ttest $(git rev-list $commit -- . | wc -l) = 1\n' span_id: 52 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'further setup' span_id:59))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'\tgit checkout -b side &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\techo Irrelevant >c &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\techo Irrelevant >d/f &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\tgit add c d/f &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tgit commit -m "Side makes an irrelevant commit" &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\tgit tag side_c0 &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\techo "More Irrelevancy" >c &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:73) (Token id: Id.Lit_Chars val: '\tgit commit -m "Side makes another irrelevant commit" &&\n' span_id: 74 ) (Token id:Id.Lit_Chars val:'\techo Bye >a &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\tgit commit -m "Side touches a" &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit tag side_a1 &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\techo "Yet more Irrelevancy" >c &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:82) (Token id: Id.Lit_Chars val: '\tgit commit -m "Side makes yet another irrelevant commit" &&\n' span_id: 83 ) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\techo Another >b &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\techo Munged >d/z &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\tgit add b d/z &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tgit commit -m "Master touches b" &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\tgit tag master_b0 &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit merge side &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\techo Touched >b &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit add b &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:94) (Token id: Id.Lit_Chars val: '\tgit commit -m "Master touches b again"\n' span_id: 95 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path optimization 2' span_id:102))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:106) (Token id: Id.Lit_Chars val: '\tgit rev-parse side_a1 initial >expected &&\n' span_id: 107 ) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD -- a >actual &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:109) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pathspec with leading path' span_id:116))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) (Token id: Id.Lit_Chars val: '\tgit rev-parse master^ master_b0 side_c0 initial >expected &&\n' span_id: 121 ) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD -- d >actual &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:123) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pathspec with glob (1)' span_id:130))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) (Token id: Id.Lit_Chars val: '\tgit rev-parse master^ master_b0 side_c0 initial >expected &&\n' span_id: 135 ) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD -- "d/*" >actual &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:137) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pathspec with glob (2)' span_id:144))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:148) (Token id: Id.Lit_Chars val: '\tgit rev-parse side_c0 initial >expected &&\n' span_id: 149 ) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD -- "d/[a-m]*" >actual &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:151) ) } ) (C {(test_done)}) ] )