|  | #!/bin/sh | 
|  |  | 
|  | test_description='pack should notice missing commit objects' | 
|  |  | 
|  | . ./test-lib.sh | 
|  |  | 
|  | test_expect_success setup ' | 
|  | for i in 1 2 3 4 5 | 
|  | do | 
|  | echo "$i" >"file$i" && | 
|  | git add "file$i" && | 
|  | test_tick && | 
|  | git commit -m "$i" && | 
|  | git tag "tag$i" | 
|  | done && | 
|  | obj=$(git rev-parse --verify tag3) && | 
|  | fanout=$(expr "$obj" : "\(..\)") && | 
|  | remainder=$(expr "$obj" : "..\(.*\)") && | 
|  | rm -f ".git/objects/$fanout/$remainder" | 
|  | ' | 
|  |  | 
|  | test_expect_success 'check corruption' ' | 
|  | test_must_fail git fsck | 
|  | ' | 
|  |  | 
|  | test_expect_success 'rev-list notices corruption (1)' ' | 
|  | test_must_fail git rev-list HEAD | 
|  | ' | 
|  |  | 
|  | test_expect_success 'rev-list notices corruption (2)' ' | 
|  | test_must_fail git rev-list --objects HEAD | 
|  | ' | 
|  |  | 
|  | test_expect_success 'pack-objects notices corruption' ' | 
|  | echo HEAD | | 
|  | test_must_fail git pack-objects --revs pack | 
|  | ' | 
|  |  | 
|  | test_done |