add test for streaming corrupt blobs
We do not have many tests for handling corrupt objects. This new test at least checks that we detect a byte error in a corrupt blob object while streaming it out with cat-file. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Mar 25, 2013 at 16:21 UTC
7b6257b0d45f562629ac660cb1845c8a2aac7df1
1 file changed
+34
t/t1060-object-corruption.sh
new
+34
@@ -0,0 +1,34 @@
1
+#!/bin/sh
2
+
3
+test_description='see how we handle various forms of corruption'
4
+. ./test-lib.sh
5
+
6
+# convert "1234abcd" to ".git/objects/12/34abcd"
7
+obj_to_file() {
8
+ echo "$(git rev-parse --git-dir)/objects/$(git rev-parse "$1" | sed 's,..,&/,')"
9
+}
10
+
11
+# Convert byte at offset "$2" of object "$1" into '\0'
12
+corrupt_byte() {
13
+ obj_file=$(obj_to_file "$1") &&
14
+ chmod +w "$obj_file" &&
15
+ printf '\0' | dd of="$obj_file" bs=1 seek="$2" conv=notrunc
16
+}
17
+
18
+test_expect_success 'setup corrupt repo' '
19
+ git init bit-error &&
20
+ (
21
+ cd bit-error &&
22
+ test_commit content &&
23
+ corrupt_byte HEAD:content.t 10
24
+ )
25
+'
26
+
27
+test_expect_success 'streaming a corrupt blob fails' '
28
+ (
29
+ cd bit-error &&
30
+ test_must_fail git cat-file blob HEAD:content.t
31
+ )
32
+'
33
+
34
+test_done