Skip to content

Commit e7588c9

Browse files
newrengitster
authored andcommitted
t3401: add another directory rename testcase for rebase and am
Similar to commit 1634688 ("t3401: add directory rename testcases for rebase and am", 2018-06-27), add another testcase for directory rename detection. This new testcase differs in that it showcases a situation where no directory rename was performed, but which some backends incorrectly detect. As with the other testcase, run this in conjunction with each of the types of rebases: git-rebase--interactive git-rebase--am git-rebase--merge and also use the same testcase for git am --3way Reported-by: Nikolay Kasyanov <[email protected]> Signed-off-by: Elijah Newren <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent b00bf1c commit e7588c9

File tree

1 file changed

+109
-1
lines changed

1 file changed

+109
-1
lines changed

t/t3401-rebase-and-am-rename.sh

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ test_description='git rebase + directory rename tests'
55
. ./test-lib.sh
66
. "$TEST_DIRECTORY"/lib-rebase.sh
77

8-
test_expect_success 'setup testcase' '
8+
test_expect_success 'setup testcase where directory rename should be detected' '
99
test_create_repo dir-rename &&
1010
(
1111
cd dir-rename &&
@@ -102,4 +102,112 @@ test_expect_failure 'am: directory rename detected' '
102102
)
103103
'
104104

105+
test_expect_success 'setup testcase where directory rename should NOT be detected' '
106+
test_create_repo no-dir-rename &&
107+
(
108+
cd no-dir-rename &&
109+
110+
mkdir x &&
111+
test_seq 1 10 >x/a &&
112+
test_seq 11 20 >x/b &&
113+
test_seq 21 30 >x/c &&
114+
echo original >project_info &&
115+
git add x project_info &&
116+
git commit -m "Initial" &&
117+
118+
git branch O &&
119+
git branch A &&
120+
git branch B &&
121+
122+
git checkout A &&
123+
echo v2 >project_info &&
124+
git add project_info &&
125+
git commit -m "Modify project_info" &&
126+
127+
git checkout B &&
128+
mkdir y &&
129+
git mv x/c y/c &&
130+
echo v1 >project_info &&
131+
git add project_info &&
132+
git commit -m "Rename x/c to y/c, modify project_info"
133+
)
134+
'
135+
136+
test_expect_success 'rebase --interactive: NO directory rename' '
137+
test_when_finished "git -C no-dir-rename rebase --abort" &&
138+
(
139+
cd no-dir-rename &&
140+
141+
git checkout B^0 &&
142+
143+
set_fake_editor &&
144+
test_must_fail env FAKE_LINES="1" git rebase --interactive A &&
145+
146+
git ls-files -s >out &&
147+
test_line_count = 6 out &&
148+
149+
test_path_is_file x/a &&
150+
test_path_is_file x/b &&
151+
test_path_is_missing x/c
152+
)
153+
'
154+
155+
test_expect_failure 'rebase (am): NO directory rename' '
156+
test_when_finished "git -C no-dir-rename rebase --abort" &&
157+
(
158+
cd no-dir-rename &&
159+
160+
git checkout B^0 &&
161+
162+
set_fake_editor &&
163+
test_must_fail git rebase A &&
164+
165+
git ls-files -s >out &&
166+
test_line_count = 6 out &&
167+
168+
test_path_is_file x/a &&
169+
test_path_is_file x/b &&
170+
test_path_is_missing x/c
171+
)
172+
'
173+
174+
test_expect_success 'rebase --merge: NO directory rename' '
175+
test_when_finished "git -C no-dir-rename rebase --abort" &&
176+
(
177+
cd no-dir-rename &&
178+
179+
git checkout B^0 &&
180+
181+
set_fake_editor &&
182+
test_must_fail git rebase --merge A &&
183+
184+
git ls-files -s >out &&
185+
test_line_count = 6 out &&
186+
187+
test_path_is_file x/a &&
188+
test_path_is_file x/b &&
189+
test_path_is_missing x/c
190+
)
191+
'
192+
193+
test_expect_failure 'am: NO directory rename' '
194+
test_when_finished "git -C no-dir-rename am --abort" &&
195+
(
196+
cd no-dir-rename &&
197+
198+
git checkout A^0 &&
199+
200+
git format-patch -1 B &&
201+
202+
test_must_fail git am --3way 0001*.patch &&
203+
204+
git ls-files -s >out &&
205+
test_line_count = 6 out &&
206+
207+
test_path_is_file x/a &&
208+
test_path_is_file x/b &&
209+
test_path_is_missing x/c
210+
)
211+
'
212+
105213
test_done

0 commit comments

Comments
 (0)