Browse Source
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>maint
Jeff King
12 years ago
committed by
Junio C Hamano
1 changed files with 34 additions and 0 deletions
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='see how we handle various forms of corruption' |
||||
. ./test-lib.sh |
||||
|
||||
# convert "1234abcd" to ".git/objects/12/34abcd" |
||||
obj_to_file() { |
||||
echo "$(git rev-parse --git-dir)/objects/$(git rev-parse "$1" | sed 's,..,&/,')" |
||||
} |
||||
|
||||
# Convert byte at offset "$2" of object "$1" into '\0' |
||||
corrupt_byte() { |
||||
obj_file=$(obj_to_file "$1") && |
||||
chmod +w "$obj_file" && |
||||
printf '\0' | dd of="$obj_file" bs=1 seek="$2" conv=notrunc |
||||
} |
||||
|
||||
test_expect_success 'setup corrupt repo' ' |
||||
git init bit-error && |
||||
( |
||||
cd bit-error && |
||||
test_commit content && |
||||
corrupt_byte HEAD:content.t 10 |
||||
) |
||||
' |
||||
|
||||
test_expect_success 'streaming a corrupt blob fails' ' |
||||
( |
||||
cd bit-error && |
||||
test_must_fail git cat-file blob HEAD:content.t |
||||
) |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue