]> git.ipfire.org Git - thirdparty/git.git/blame - t/t3502-cherry-pick-merge.sh
path.c: don't call the match function without value in trie_find()
[thirdparty/git.git] / t / t3502-cherry-pick-merge.sh
CommitLineData
6232b343
JH
1#!/bin/sh
2
3test_description='cherry picking and reverting a merge
4
5 b---c
6 / /
7 initial---a
8
9'
10
11. ./test-lib.sh
12
13test_expect_success setup '
14
15 >A &&
16 >B &&
17 git add A B &&
18 git commit -m "Initial" &&
19 git tag initial &&
20 git branch side &&
21 echo new line >A &&
22 git commit -m "add line to A" A &&
23 git tag a &&
24 git checkout side &&
25 echo new line >B &&
26 git commit -m "add line to B" B &&
27 git tag b &&
28 git checkout master &&
29 git merge side &&
30 git tag c
31
32'
33
b16a991c
JK
34test_expect_success 'cherry-pick -m complains of bogus numbers' '
35 # expect 129 here to distinguish between cases where
36 # there was nothing to cherry-pick
37 test_expect_code 129 git cherry-pick -m &&
38 test_expect_code 129 git cherry-pick -m foo b &&
39 test_expect_code 129 git cherry-pick -m -1 b &&
40 test_expect_code 129 git cherry-pick -m 0 b
41'
42
4d67b4e4 43test_expect_success 'cherry-pick explicit first parent of a non-merge' '
6232b343
JH
44
45 git reset --hard &&
46 git checkout a^0 &&
4d67b4e4
SO
47 git cherry-pick -m 1 b &&
48 git diff --exit-code c --
6232b343
JH
49
50'
51
52test_expect_success 'cherry pick a merge without -m should fail' '
53
54 git reset --hard &&
55 git checkout a^0 &&
d492b31c 56 test_must_fail git cherry-pick c &&
9f12bec4 57 git diff --exit-code a --
6232b343
JH
58
59'
60
61test_expect_success 'cherry pick a merge (1)' '
62
63 git reset --hard &&
64 git checkout a^0 &&
65 git cherry-pick -m 1 c &&
66 git diff --exit-code c
67
68'
69
70test_expect_success 'cherry pick a merge (2)' '
71
72 git reset --hard &&
73 git checkout b^0 &&
74 git cherry-pick -m 2 c &&
75 git diff --exit-code c
76
77'
78
79test_expect_success 'cherry pick a merge relative to nonexistent parent should fail' '
80
81 git reset --hard &&
82 git checkout b^0 &&
d492b31c 83 test_must_fail git cherry-pick -m 3 c
6232b343
JH
84
85'
86
4d67b4e4 87test_expect_success 'revert explicit first parent of a non-merge' '
6232b343
JH
88
89 git reset --hard &&
90 git checkout c^0 &&
4d67b4e4
SO
91 git revert -m 1 b &&
92 git diff --exit-code a --
6232b343
JH
93
94'
95
96test_expect_success 'revert a merge without -m should fail' '
97
98 git reset --hard &&
99 git checkout c^0 &&
d492b31c 100 test_must_fail git revert c &&
6232b343
JH
101 git diff --exit-code c
102
103'
104
105test_expect_success 'revert a merge (1)' '
106
107 git reset --hard &&
108 git checkout c^0 &&
109 git revert -m 1 c &&
9f12bec4 110 git diff --exit-code a --
6232b343
JH
111
112'
113
114test_expect_success 'revert a merge (2)' '
115
116 git reset --hard &&
117 git checkout c^0 &&
118 git revert -m 2 c &&
9f12bec4 119 git diff --exit-code b --
6232b343
JH
120
121'
122
123test_expect_success 'revert a merge relative to nonexistent parent should fail' '
124
125 git reset --hard &&
126 git checkout c^0 &&
d492b31c 127 test_must_fail git revert -m 3 c &&
6232b343
JH
128 git diff --exit-code c
129
130'
131
132test_done