(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:'cherry picking and reverting a merge\n' span_id:6) (Token id:Id.Lit_Chars val:'\n' span_id:7) (Token id:Id.Lit_Chars val:'\t\tb---c\n' span_id:8) (Token id:Id.Lit_Chars val:'\t / /\n' span_id:9) (Token id:Id.Lit_Chars val:'\tinitial---a\n' span_id:10) (Token id:Id.Lit_Chars val:'\n' span_id:11) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:25) (Token id:Id.Lit_Chars val:'\n' span_id:26) (Token id:Id.Lit_Chars val:'\t>A &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\t>B &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit add A B &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit commit -m "Initial" &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit tag initial &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit branch side &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\techo new line >A &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tgit commit -m "add line to A" A &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit tag a &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\techo new line >B &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit commit -m "add line to B" B &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit tag b &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit merge side &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\tgit tag c\n' span_id:42) (Token id:Id.Lit_Chars val:'\n' span_id:43) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry-pick a non-merge with -m should fail' span_id:50))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:54) (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\tgit checkout a^0 &&\n' span_id:57) (Token id: Id.Lit_Chars val: '\ttest_expect_code 128 git cherry-pick -m 1 b &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code a --\n' span_id:59) (Token id:Id.Lit_Chars val:'\n' span_id:60) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry pick a merge without -m should fail' span_id:67))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:71) (Token id:Id.Lit_Chars val:'\n' span_id:72) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\tgit checkout a^0 &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\ttest_must_fail git cherry-pick c &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code a --\n' span_id:76) (Token id:Id.Lit_Chars val:'\n' span_id:77) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry pick a merge (1)' span_id:84))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:88) (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit checkout a^0 &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit cherry-pick -m 1 c &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code c\n' span_id:93) (Token id:Id.Lit_Chars val:'\n' span_id:94) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry pick a merge (2)' span_id:101))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:105) (Token id:Id.Lit_Chars val:'\n' span_id:106) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgit checkout b^0 &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\tgit cherry-pick -m 2 c &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code c\n' span_id:110) (Token id:Id.Lit_Chars val:'\n' span_id:111) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'cherry pick a merge relative to nonexistent parent should fail' span_id: 118 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:122) (Token id:Id.Lit_Chars val:'\n' span_id:123) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\tgit checkout b^0 &&\n' span_id:125) (Token id: Id.Lit_Chars val: '\ttest_must_fail git cherry-pick -m 3 c\n' span_id: 126 ) (Token id:Id.Lit_Chars val:'\n' span_id:127) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'revert a non-merge with -m should fail' span_id:134))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:138) (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\tgit checkout c^0 &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\ttest_must_fail git revert -m 1 b &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code c\n' span_id:143) (Token id:Id.Lit_Chars val:'\n' span_id:144) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'revert a merge without -m should fail' span_id:151))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:155) (Token id:Id.Lit_Chars val:'\n' span_id:156) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:157) (Token id:Id.Lit_Chars val:'\tgit checkout c^0 &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\ttest_must_fail git revert c &&\n' span_id:159) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code c\n' span_id:160) (Token id:Id.Lit_Chars val:'\n' span_id:161) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'revert a merge (1)' span_id:168))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:172) (Token id:Id.Lit_Chars val:'\n' span_id:173) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\tgit checkout c^0 &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\tgit revert -m 1 c &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code a --\n' span_id:177) (Token id:Id.Lit_Chars val:'\n' span_id:178) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'revert a merge (2)' span_id:185))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:189) (Token id:Id.Lit_Chars val:'\n' span_id:190) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\tgit checkout c^0 &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\tgit revert -m 2 c &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code b --\n' span_id:194) (Token id:Id.Lit_Chars val:'\n' span_id:195) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'revert a merge relative to nonexistent parent should fail' span_id: 202 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:206) (Token id:Id.Lit_Chars val:'\n' span_id:207) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\tgit checkout c^0 &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\ttest_must_fail git revert -m 3 c &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code c\n' span_id:211) (Token id:Id.Lit_Chars val:'\n' span_id:212) ) } ) (C {(test_done)}) ] )