Skip to content

Commit 03c4829

Browse files
j6tgitster
authored andcommitted
Show a failure of rebase -p if the merge had a conflict
This extends t3409-rebase-preserve-merges by a case where the merge that is rebased has a conflict. Therefore, the rebase stops and expects that the user resolves the conflict. However, currently rebase --continue fails because .git/rebase-merge/author-script is missing. The test script had allocated two identical clones, but only one of them (clone2) was used. Now we use both as indicated in the comment. Also, two instances of && was missing in the setup part. Signed-off-by: Johannes Sixt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 5832d1a commit 03c4829

File tree

1 file changed

+44
-11
lines changed

1 file changed

+44
-11
lines changed

t/t3409-rebase-preserve-merges.sh

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,23 @@ Run "git rebase -p" and check that merges are properly carried along
1111
GIT_AUTHOR_EMAIL=bogus_email_address
1212
export GIT_AUTHOR_EMAIL
1313

14-
#echo 'Setting up:
14+
# Clone 1 (trivial merge):
1515
#
16-
#A1--A2 <-- origin/master
17-
# \ \
18-
# B1--M <-- topic
19-
# \
20-
# B2 <-- origin/topic
16+
# A1--A2 <-- origin/master
17+
# \ \
18+
# B1--M <-- topic
19+
# \
20+
# B2 <-- origin/topic
2121
#
22-
#'
22+
# Clone 2 (conflicting merge):
23+
#
24+
# A1--A2--B3 <-- origin/master
25+
# \ \
26+
# B1------M <-- topic
27+
# \
28+
# B2 <-- origin/topic
29+
#
30+
# In both cases, 'topic' is rebased onto 'origin/topic'.
2331

2432
test_expect_success 'setup for merge-preserving rebase' \
2533
'echo First > A &&
@@ -37,12 +45,19 @@ test_expect_success 'setup for merge-preserving rebase' \
3745
cd clone1 &&
3846
git checkout -b topic origin/topic &&
3947
git merge origin/master &&
40-
cd ..
48+
cd .. &&
49+
50+
echo Fifth > B &&
51+
git add B &&
52+
git commit -m "Add different B" &&
4153
42-
git clone ./. clone2
54+
git clone ./. clone2 &&
4355
cd clone2 &&
4456
git checkout -b topic origin/topic &&
45-
git merge origin/master &&
57+
test_must_fail git merge origin/master &&
58+
echo Resolved > B &&
59+
git add B &&
60+
git commit -m "Merge origin/master into topic" &&
4661
cd .. &&
4762
4863
git checkout topic &&
@@ -51,11 +66,29 @@ test_expect_success 'setup for merge-preserving rebase' \
5166
'
5267

5368
test_expect_success 'rebase -p fakes interactive rebase' '
54-
cd clone2 &&
69+
(
70+
cd clone1 &&
5571
git fetch &&
5672
git rebase -p origin/topic &&
5773
test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&
5874
test 1 = $(git rev-list --all --pretty=oneline | grep "Merge commit" | wc -l)
75+
)
76+
'
77+
78+
test_expect_failure '--continue works after a conflict' '
79+
(
80+
cd clone2 &&
81+
git fetch &&
82+
test_must_fail git rebase -p origin/topic &&
83+
test 2 = $(git ls-files B | wc -l) &&
84+
echo Resolved again > B &&
85+
test_must_fail git rebase --continue &&
86+
git add B &&
87+
git rebase --continue &&
88+
test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&
89+
test 1 = $(git rev-list --all --pretty=oneline | grep "Add different" | wc -l) &&
90+
test 1 = $(git rev-list --all --pretty=oneline | grep "Merge origin" | wc -l)
91+
)
5992
'
6093

6194
test_done

0 commit comments

Comments
 (0)