]>
Commit | Line | Data |
---|---|---|
4c324c00 JS |
1 | #!/bin/sh |
2 | ||
3 | test_description='errors in upload-pack' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
14dc2d98 | 7 | D=$(pwd) |
4c324c00 JS |
8 | |
9 | corrupt_repo () { | |
10 | object_sha1=$(git rev-parse "$1") && | |
11 | ob=$(expr "$object_sha1" : "\(..\)") && | |
12 | ject=$(expr "$object_sha1" : "..\(..*\)") && | |
13 | rm -f ".git/objects/$ob/$ject" | |
14 | } | |
15 | ||
16 | test_expect_success 'setup and corrupt repository' ' | |
17 | ||
18 | echo file >file && | |
19 | git add file && | |
20 | git rev-parse :file && | |
21 | git commit -a -m original && | |
22 | test_tick && | |
23 | echo changed >file && | |
24 | git commit -a -m changed && | |
25 | corrupt_repo HEAD:file | |
26 | ||
27 | ' | |
28 | ||
41ac414e | 29 | test_expect_success 'fsck fails' ' |
d492b31c | 30 | test_must_fail git fsck |
4c324c00 JS |
31 | ' |
32 | ||
f0cea83f | 33 | test_expect_success 'upload-pack fails due to error in pack-objects packing' ' |
4c324c00 | 34 | |
1d8cd418 JS |
35 | printf "0032want %s\n00000009done\n0000" \ |
36 | $(git rev-parse HEAD) >input && | |
37 | test_must_fail git upload-pack . <input >/dev/null 2>output.err && | |
9aa98efc JX |
38 | test_i18ngrep "unable to read" output.err && |
39 | test_i18ngrep "pack-objects died" output.err | |
4c324c00 JS |
40 | ' |
41 | ||
42 | test_expect_success 'corrupt repo differently' ' | |
43 | ||
44 | git hash-object -w file && | |
45 | corrupt_repo HEAD^^{tree} | |
46 | ||
47 | ' | |
48 | ||
41ac414e | 49 | test_expect_success 'fsck fails' ' |
d492b31c | 50 | test_must_fail git fsck |
4c324c00 JS |
51 | ' |
52 | test_expect_success 'upload-pack fails due to error in rev-list' ' | |
53 | ||
1d8cd418 JS |
54 | printf "0032want %s\n0034shallow %s00000009done\n0000" \ |
55 | $(git rev-parse HEAD) $(git rev-parse HEAD^) >input && | |
56 | test_must_fail git upload-pack . <input >/dev/null 2>output.err && | |
0ac77ec3 | 57 | grep "bad tree object" output.err |
4c324c00 JS |
58 | ' |
59 | ||
014ade74 | 60 | test_expect_success 'upload-pack fails due to bad want (no object)' ' |
9f9aa761 EN |
61 | |
62 | printf "0045want %s multi_ack_detailed\n00000009done\n0000" \ | |
63 | "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef" >input && | |
64 | test_must_fail git upload-pack . <input >output 2>output.err && | |
6963a4e4 JK |
65 | grep "not our ref" output.err && |
66 | grep "ERR" output && | |
67 | ! grep multi_ack_detailed output.err | |
9f9aa761 EN |
68 | ' |
69 | ||
014ade74 JK |
70 | test_expect_success 'upload-pack fails due to bad want (not tip)' ' |
71 | ||
72 | oid=$(echo an object we have | git hash-object -w --stdin) && | |
73 | printf "0045want %s multi_ack_detailed\n00000009done\n0000" \ | |
74 | "$oid" >input && | |
75 | test_must_fail git upload-pack . <input >output 2>output.err && | |
76 | grep "not our ref" output.err && | |
77 | grep "ERR" output && | |
78 | ! grep multi_ack_detailed output.err | |
79 | ' | |
80 | ||
f0cea83f NE |
81 | test_expect_success 'upload-pack fails due to error in pack-objects enumeration' ' |
82 | ||
1d8cd418 JS |
83 | printf "0032want %s\n00000009done\n0000" \ |
84 | $(git rev-parse HEAD) >input && | |
85 | test_must_fail git upload-pack . <input >/dev/null 2>output.err && | |
f0cea83f NE |
86 | grep "bad tree object" output.err && |
87 | grep "pack-objects died" output.err | |
88 | ' | |
89 | ||
4c324c00 JS |
90 | test_expect_success 'create empty repository' ' |
91 | ||
92 | mkdir foo && | |
93 | cd foo && | |
94 | git init | |
95 | ||
96 | ' | |
97 | ||
41ac414e | 98 | test_expect_success 'fetch fails' ' |
4c324c00 | 99 | |
d492b31c | 100 | test_must_fail git fetch .. master |
4c324c00 JS |
101 | |
102 | ' | |
103 | ||
104 | test_done |