@@ -9,7 +9,8 @@ TEST_PASSES_SANITIZE_LEAK=true
9
9
10
10
test_expect_success setup '
11
11
test_commit one &&
12
- test_commit two
12
+ test_commit two &&
13
+ main_sha1=$(git rev-parse refs/heads/main)
13
14
'
14
15
15
16
test_expect_success ' fast-import: fail on invalid branch name ".badbranchname"' '
@@ -43,25 +44,25 @@ test_expect_success 'fast-import: fail on invalid branch name "bad[branch]name"'
43
44
'
44
45
45
46
test_expect_success ' git branch shows badly named ref as warning' '
46
- cp .git/refs/heads/ main .git/ refs/heads/broken...ref &&
47
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
47
+ test-tool ref-store main update-ref msg " refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
48
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
48
49
git branch >output 2>error &&
49
50
test_i18ngrep -e "ignoring ref with broken name refs/heads/broken\.\.\.ref" error &&
50
51
! grep -e "broken\.\.\.ref" output
51
52
'
52
53
53
54
test_expect_success ' branch -d can delete badly named ref' '
54
- cp .git/refs/heads/ main .git/ refs/heads/broken...ref &&
55
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
55
+ test-tool ref-store main update-ref msg " refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
56
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
56
57
git branch -d broken...ref &&
57
58
git branch >output 2>error &&
58
59
! grep -e "broken\.\.\.ref" error &&
59
60
! grep -e "broken\.\.\.ref" output
60
61
'
61
62
62
63
test_expect_success ' branch -D can delete badly named ref' '
63
- cp .git/refs/heads/ main .git/ refs/heads/broken...ref &&
64
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
64
+ test-tool ref-store main update-ref msg " refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
65
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
65
66
git branch -D broken...ref &&
66
67
git branch >output 2>error &&
67
68
! grep -e "broken\.\.\.ref" error &&
@@ -90,15 +91,15 @@ test_expect_success 'branch -D cannot delete absolute path' '
90
91
'
91
92
92
93
test_expect_success ' git branch cannot create a badly named ref' '
93
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
94
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
94
95
test_must_fail git branch broken...ref &&
95
96
git branch >output 2>error &&
96
97
! grep -e "broken\.\.\.ref" error &&
97
98
! grep -e "broken\.\.\.ref" output
98
99
'
99
100
100
101
test_expect_success ' branch -m cannot rename to a bad ref name' '
101
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
102
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
102
103
test_might_fail git branch -D goodref &&
103
104
git branch goodref &&
104
105
test_must_fail git branch -m goodref broken...ref &&
@@ -109,8 +110,9 @@ test_expect_success 'branch -m cannot rename to a bad ref name' '
109
110
'
110
111
111
112
test_expect_failure ' branch -m can rename from a bad ref name' '
112
- cp .git/refs/heads/main .git/refs/heads/broken...ref &&
113
- test_when_finished "rm -f .git/refs/heads/broken...ref" &&
113
+ test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
114
+
115
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
114
116
git branch -m broken...ref renamed &&
115
117
test_cmp_rev main renamed &&
116
118
git branch >output 2>error &&
@@ -119,7 +121,7 @@ test_expect_failure 'branch -m can rename from a bad ref name' '
119
121
'
120
122
121
123
test_expect_success ' push cannot create a badly named ref' '
122
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
124
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
123
125
test_must_fail git push "file://$(pwd)" HEAD:refs/heads/broken...ref &&
124
126
git branch >output 2>error &&
125
127
! grep -e "broken\.\.\.ref" error &&
@@ -139,7 +141,7 @@ test_expect_failure 'push --mirror can delete badly named ref' '
139
141
cd dest &&
140
142
test_commit two &&
141
143
git checkout --detach &&
142
- cp .git/refs/heads/ main .git/ refs/heads/broken...ref
144
+ test-tool ref-store main update-ref msg " refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION
143
145
) &&
144
146
git -C src push --mirror "file://$top/dest" &&
145
147
git -C dest branch >output 2>error &&
@@ -148,9 +150,9 @@ test_expect_failure 'push --mirror can delete badly named ref' '
148
150
'
149
151
150
152
test_expect_success ' rev-parse skips symref pointing to broken name' '
151
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
153
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
152
154
git branch shadow one &&
153
- cp .git/refs/heads/ main .git/ refs/heads/broken...ref &&
155
+ test-tool ref-store main update-ref msg " refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
154
156
printf "ref: refs/heads/broken...ref\n" >.git/refs/tags/shadow &&
155
157
test_when_finished "rm -f .git/refs/tags/shadow" &&
156
158
git rev-parse --verify one >expect &&
@@ -160,8 +162,8 @@ test_expect_success 'rev-parse skips symref pointing to broken name' '
160
162
'
161
163
162
164
test_expect_success ' for-each-ref emits warnings for broken names' '
163
- cp .git/refs/heads/ main .git/ refs/heads/broken...ref &&
164
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
165
+ test-tool ref-store main update-ref msg " refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
166
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
165
167
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
166
168
test_when_finished "rm -f .git/refs/heads/badname" &&
167
169
printf "ref: refs/heads/main\n" >.git/refs/heads/broken...symref &&
@@ -176,8 +178,8 @@ test_expect_success 'for-each-ref emits warnings for broken names' '
176
178
'
177
179
178
180
test_expect_success ' update-ref -d can delete broken name' '
179
- cp .git/refs/heads/ main .git/ refs/heads/broken...ref &&
180
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
181
+ test-tool ref-store main update-ref msg " refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
182
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
181
183
git update-ref -d refs/heads/broken...ref >output 2>error &&
182
184
test_must_be_empty output &&
183
185
test_must_be_empty error &&
@@ -187,8 +189,8 @@ test_expect_success 'update-ref -d can delete broken name' '
187
189
'
188
190
189
191
test_expect_success ' branch -d can delete broken name' '
190
- cp .git/refs/heads/ main .git/ refs/heads/broken...ref &&
191
- test_when_finished "rm -f .git/ refs/heads/broken...ref" &&
192
+ test-tool ref-store main update-ref msg " refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
193
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
192
194
git branch -d broken...ref >output 2>error &&
193
195
test_i18ngrep "Deleted branch broken...ref (was broken)" output &&
194
196
test_must_be_empty error &&
@@ -198,8 +200,9 @@ test_expect_success 'branch -d can delete broken name' '
198
200
'
199
201
200
202
test_expect_success ' update-ref --no-deref -d can delete symref to broken name' '
201
- cp .git/refs/heads/main .git/refs/heads/broken...ref &&
202
- test_when_finished "rm -f .git/refs/heads/broken...ref" &&
203
+ test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
204
+
205
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
203
206
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
204
207
test_when_finished "rm -f .git/refs/heads/badname" &&
205
208
git update-ref --no-deref -d refs/heads/badname >output 2>error &&
@@ -209,8 +212,9 @@ test_expect_success 'update-ref --no-deref -d can delete symref to broken name'
209
212
'
210
213
211
214
test_expect_success ' branch -d can delete symref to broken name' '
212
- cp .git/refs/heads/main .git/refs/heads/broken...ref &&
213
- test_when_finished "rm -f .git/refs/heads/broken...ref" &&
215
+ test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
216
+
217
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
214
218
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
215
219
test_when_finished "rm -f .git/refs/heads/badname" &&
216
220
git branch -d badname >output 2>error &&
@@ -238,8 +242,9 @@ test_expect_success 'branch -d can delete dangling symref to broken name' '
238
242
'
239
243
240
244
test_expect_success ' update-ref -d can delete broken name through symref' '
241
- cp .git/refs/heads/main .git/refs/heads/broken...ref &&
242
- test_when_finished "rm -f .git/refs/heads/broken...ref" &&
245
+ test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
246
+
247
+ test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
243
248
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
244
249
test_when_finished "rm -f .git/refs/heads/badname" &&
245
250
git update-ref -d refs/heads/badname >output 2>error &&
0 commit comments