t3401: add another directory rename testcase for rebase and am
Similar to commit 16346883ab ("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 <corrmage@gmail.com> Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren committed
Aug 29, 2018 at 00:06 UTC
e7588c96526293055727b27c4c51df86cfe06daf
1 file changed
+109
-1
t/t3401-rebase-and-am-rename.sh
+109
-1
@@ -5,7 +5,7 @@ test_description='git rebase + directory rename tests'
5
. ./test-lib.sh
6
. "$TEST_DIRECTORY"/lib-rebase.sh
7
8
-test_expect_success 'setup testcase' '
8
+test_expect_success 'setup testcase where directory rename should be detected' '
9
test_create_repo dir-rename &&
10
(
11
cd dir-rename &&
@@ -102,4 +102,112 @@ test_expect_failure 'am: directory rename detected' '
102
)
103
'
104
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
+
213
test_done