]>
Commit | Line | Data |
---|---|---|
b10a5358 JH |
1 | #!/bin/sh |
2 | ||
3 | test_description='fetch/receive strict mode' | |
4 | . ./test-lib.sh | |
5 | ||
6 | test_expect_success setup ' | |
7 | echo hello >greetings && | |
8 | git add greetings && | |
9 | git commit -m greetings && | |
10 | ||
11 | S=$(git rev-parse :greetings | sed -e "s|^..|&/|") && | |
12 | X=$(echo bye | git hash-object -w --stdin | sed -e "s|^..|&/|") && | |
13 | mv -f .git/objects/$X .git/objects/$S && | |
14 | ||
15 | test_must_fail git fsck | |
16 | ' | |
17 | ||
18 | test_expect_success 'fetch without strict' ' | |
19 | rm -rf dst && | |
20 | git init dst && | |
21 | ( | |
22 | cd dst && | |
23 | git config fetch.fsckobjects false && | |
24 | git config transfer.fsckobjects false && | |
2e2e7e9d | 25 | test_must_fail git fetch ../.git master |
b10a5358 JH |
26 | ) |
27 | ' | |
28 | ||
29 | test_expect_success 'fetch with !fetch.fsckobjects' ' | |
30 | rm -rf dst && | |
31 | git init dst && | |
32 | ( | |
33 | cd dst && | |
34 | git config fetch.fsckobjects false && | |
35 | git config transfer.fsckobjects true && | |
2e2e7e9d | 36 | test_must_fail git fetch ../.git master |
b10a5358 JH |
37 | ) |
38 | ' | |
39 | ||
40 | test_expect_success 'fetch with fetch.fsckobjects' ' | |
41 | rm -rf dst && | |
42 | git init dst && | |
43 | ( | |
44 | cd dst && | |
45 | git config fetch.fsckobjects true && | |
46 | git config transfer.fsckobjects false && | |
47 | test_must_fail git fetch ../.git master | |
48 | ) | |
49 | ' | |
50 | ||
51 | test_expect_success 'fetch with transfer.fsckobjects' ' | |
52 | rm -rf dst && | |
53 | git init dst && | |
54 | ( | |
55 | cd dst && | |
56 | git config transfer.fsckobjects true && | |
57 | test_must_fail git fetch ../.git master | |
58 | ) | |
59 | ' | |
60 | ||
ef7e93d9 CB |
61 | cat >exp <<EOF |
62 | To dst | |
63 | ! refs/heads/master:refs/heads/test [remote rejected] (missing necessary objects) | |
64 | EOF | |
65 | ||
b10a5358 JH |
66 | test_expect_success 'push without strict' ' |
67 | rm -rf dst && | |
68 | git init dst && | |
69 | ( | |
70 | cd dst && | |
71 | git config fetch.fsckobjects false && | |
72 | git config transfer.fsckobjects false | |
73 | ) && | |
ef7e93d9 CB |
74 | test_must_fail git push --porcelain dst master:refs/heads/test >act && |
75 | test_cmp exp act | |
b10a5358 JH |
76 | ' |
77 | ||
78 | test_expect_success 'push with !receive.fsckobjects' ' | |
79 | rm -rf dst && | |
80 | git init dst && | |
81 | ( | |
82 | cd dst && | |
83 | git config receive.fsckobjects false && | |
84 | git config transfer.fsckobjects true | |
85 | ) && | |
ef7e93d9 CB |
86 | test_must_fail git push --porcelain dst master:refs/heads/test >act && |
87 | test_cmp exp act | |
b10a5358 JH |
88 | ' |
89 | ||
ef7e93d9 CB |
90 | cat >exp <<EOF |
91 | To dst | |
74eb32d3 | 92 | ! refs/heads/master:refs/heads/test [remote rejected] (unpacker error) |
ef7e93d9 CB |
93 | EOF |
94 | ||
b10a5358 JH |
95 | test_expect_success 'push with receive.fsckobjects' ' |
96 | rm -rf dst && | |
97 | git init dst && | |
98 | ( | |
99 | cd dst && | |
100 | git config receive.fsckobjects true && | |
101 | git config transfer.fsckobjects false | |
102 | ) && | |
c4b27511 JK |
103 | test_must_fail git push --porcelain dst master:refs/heads/test >act && |
104 | test_cmp exp act | |
b10a5358 JH |
105 | ' |
106 | ||
107 | test_expect_success 'push with transfer.fsckobjects' ' | |
108 | rm -rf dst && | |
109 | git init dst && | |
110 | ( | |
111 | cd dst && | |
112 | git config transfer.fsckobjects true | |
113 | ) && | |
c4b27511 JK |
114 | test_must_fail git push --porcelain dst master:refs/heads/test >act && |
115 | test_cmp exp act | |
b10a5358 JH |
116 | ' |
117 | ||
f9e7d9f8 NTND |
118 | cat >bogus-commit <<EOF |
119 | tree $EMPTY_TREE | |
70a4ae73 JS |
120 | author Bugs Bunny 1234567890 +0000 |
121 | committer Bugs Bunny <bugs@bun.ni> 1234567890 +0000 | |
122 | ||
123 | This commit object intentionally broken | |
124 | EOF | |
125 | ||
cd94c6f9 JS |
126 | test_expect_success 'push with receive.fsck.skipList' ' |
127 | commit="$(git hash-object -t commit -w --stdin <bogus-commit)" && | |
128 | git push . $commit:refs/heads/bogus && | |
129 | rm -rf dst && | |
130 | git init dst && | |
131 | git --git-dir=dst/.git config receive.fsckObjects true && | |
132 | test_must_fail git push --porcelain dst bogus && | |
133 | git --git-dir=dst/.git config receive.fsck.skipList SKIP && | |
134 | echo $commit >dst/.git/SKIP && | |
135 | git push --porcelain dst bogus | |
136 | ' | |
137 | ||
70a4ae73 JS |
138 | test_expect_success 'push with receive.fsck.missingEmail=warn' ' |
139 | commit="$(git hash-object -t commit -w --stdin <bogus-commit)" && | |
140 | git push . $commit:refs/heads/bogus && | |
141 | rm -rf dst && | |
142 | git init dst && | |
143 | git --git-dir=dst/.git config receive.fsckobjects true && | |
144 | test_must_fail git push --porcelain dst bogus && | |
145 | git --git-dir=dst/.git config \ | |
146 | receive.fsck.missingEmail warn && | |
147 | git push --porcelain dst bogus >act 2>&1 && | |
efaba7cc JS |
148 | grep "missingEmail" act && |
149 | git --git-dir=dst/.git branch -D bogus && | |
150 | git --git-dir=dst/.git config --add \ | |
151 | receive.fsck.missingEmail ignore && | |
152 | git --git-dir=dst/.git config --add \ | |
153 | receive.fsck.badDate warn && | |
154 | git push --porcelain dst bogus >act 2>&1 && | |
155 | test_must_fail grep "missingEmail" act | |
70a4ae73 JS |
156 | ' |
157 | ||
f50c4407 JS |
158 | test_expect_success \ |
159 | 'receive.fsck.unterminatedHeader=warn triggers error' ' | |
160 | rm -rf dst && | |
161 | git init dst && | |
162 | git --git-dir=dst/.git config receive.fsckobjects true && | |
163 | git --git-dir=dst/.git config \ | |
164 | receive.fsck.unterminatedheader warn && | |
165 | test_must_fail git push --porcelain dst HEAD >act 2>&1 && | |
166 | grep "Cannot demote unterminatedheader" act | |
167 | ' | |
168 | ||
b10a5358 | 169 | test_done |