t3210: add some tests of bogus packed-refs file contents
If `packed-refs` contains indecipherable lines, we should emit an error and quit rather than just skipping the lines. Unfortunately, we currently do the latter. Add some failing tests demonstrating the problem. This will be fixed in the next commit. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
Jul 1, 2017 at 20:31 UTC
02a1a42056bd2e34f872d61e2ec7aa00dd43422b
1 file changed
+27
t/t3210-pack-refs.sh
+27
@@ -194,6 +194,33 @@ test_expect_success 'notice d/f conflict with existing ref' '
194
test_must_fail git branch foo/bar/baz/lots/of/extra/components
195
'
196
197
+test_expect_failure 'reject packed-refs with unterminated line' '
198
+ cp .git/packed-refs .git/packed-refs.bak &&
199
+ test_when_finished "mv .git/packed-refs.bak .git/packed-refs" &&
200
+ printf "%s" "$HEAD refs/zzzzz" >>.git/packed-refs &&
201
+ echo "fatal: unterminated line in .git/packed-refs: $HEAD refs/zzzzz" >expected_err &&
202
+ test_must_fail git for-each-ref >out 2>err &&
203
+ test_cmp expected_err err
204
+'
205
+
206
+test_expect_failure 'reject packed-refs containing junk' '
207
+ cp .git/packed-refs .git/packed-refs.bak &&
208
+ test_when_finished "mv .git/packed-refs.bak .git/packed-refs" &&
209
+ printf "%s\n" "bogus content" >>.git/packed-refs &&
210
+ echo "fatal: unexpected line in .git/packed-refs: bogus content" >expected_err &&
211
+ test_must_fail git for-each-ref >out 2>err &&
212
+ test_cmp expected_err err
213
+'
214
+
215
+test_expect_failure 'reject packed-refs with a short SHA-1' '
216
+ cp .git/packed-refs .git/packed-refs.bak &&
217
+ test_when_finished "mv .git/packed-refs.bak .git/packed-refs" &&
218
+ printf "%.7s %s\n" $HEAD refs/zzzzz >>.git/packed-refs &&
219
+ printf "fatal: unexpected line in .git/packed-refs: %.7s %s\n" $HEAD refs/zzzzz >expected_err &&
220
+ test_must_fail git for-each-ref >out 2>err &&
221
+ test_cmp expected_err err
222
+'
223
+
224
test_expect_success 'timeout if packed-refs.lock exists' '
225
LOCK=.git/packed-refs.lock &&
226
>"$LOCK" &&