(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 cherry-picking (and reverting) a root commit' span_id: 6 ) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:20) (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id:Id.Lit_Chars val:'\techo first > file1 &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit add file1 &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m "first" &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit symbolic-ref HEAD refs/heads/second &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\trm .git/index file1 &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\techo second > file2 &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit commit -m "second" &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\n' span_id:33) (Token id: Id.Lit_Chars val: '\tgit symbolic-ref HEAD refs/heads/third &&\n' span_id: 34 ) (Token id:Id.Lit_Chars val:'\trm .git/index file2 &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\techo third > file3 &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit add file3 &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit commit -m "third"\n' span_id:39) (Token id:Id.Lit_Chars val:'\n' span_id:40) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry-pick a root commit' span_id:47))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:51) (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\tgit checkout second^0 &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tgit cherry-pick master &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\techo first >expect &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file1\n' span_id:56) (Token id:Id.Lit_Chars val:'\n' span_id:57) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'revert a root commit' span_id:64))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:68) (Token id:Id.Lit_Chars val:'\n' span_id:69) (Token id:Id.Lit_Chars val:'\tgit revert master &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing file1\n' span_id:71) (Token id:Id.Lit_Chars val:'\n' span_id:72) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'cherry-pick a root commit with an external strategy' span_id: 79 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:83) (Token id:Id.Lit_Chars val:'\n' span_id:84) (Token id: Id.Lit_Chars val: '\tgit cherry-pick --strategy=resolve master &&\n' span_id: 85 ) (Token id:Id.Lit_Chars val:'\techo first >expect &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file1\n' span_id:87) (Token id:Id.Lit_Chars val:'\n' span_id:88) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'revert a root commit with an external strategy' span_id:95))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:99) (Token id:Id.Lit_Chars val:'\n' span_id:100) (Token id: Id.Lit_Chars val: '\tgit revert --strategy=resolve master &&\n' span_id: 101 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing file1\n' span_id:102) (Token id:Id.Lit_Chars val:'\n' span_id:103) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry-pick two root commits' span_id:110))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:114) (Token id:Id.Lit_Chars val:'\n' span_id:115) (Token id:Id.Lit_Chars val:'\techo first >expect.file1 &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\techo second >expect.file2 &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\techo third >expect.file3 &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\n' span_id:119) (Token id:Id.Lit_Chars val:'\tgit checkout second^0 &&\n' span_id:120) (Token id:Id.Lit_Chars val:'\tgit cherry-pick master third &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\n' span_id:122) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.file1 file1 &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.file2 file2 &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.file3 file3 &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify HEAD^^ &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --verify HEAD^^^\n' span_id:127) (Token id:Id.Lit_Chars val:'\n' span_id:128) ) } ) (C {(test_done)}) ] )