@@ -9,7 +9,8 @@ TEST_PASSES_SANITIZE_LEAK=true
99
1010test_expect_success setup '
1111 test_commit one &&
12- test_commit two
12+ test_commit two &&
13+ main_sha1=$(git rev-parse refs/heads/main)
1314'
1415
1516test_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"'
4344'
4445
4546test_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" &&
4849 git branch >output 2>error &&
4950 test_i18ngrep -e "ignoring ref with broken name refs/heads/broken\.\.\.ref" error &&
5051 ! grep -e "broken\.\.\.ref" output
5152'
5253
5354test_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" &&
5657 git branch -d broken...ref &&
5758 git branch >output 2>error &&
5859 ! grep -e "broken\.\.\.ref" error &&
5960 ! grep -e "broken\.\.\.ref" output
6061'
6162
6263test_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" &&
6566 git branch -D broken...ref &&
6667 git branch >output 2>error &&
6768 ! grep -e "broken\.\.\.ref" error &&
@@ -90,15 +91,15 @@ test_expect_success 'branch -D cannot delete absolute path' '
9091'
9192
9293test_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" &&
9495 test_must_fail git branch broken...ref &&
9596 git branch >output 2>error &&
9697 ! grep -e "broken\.\.\.ref" error &&
9798 ! grep -e "broken\.\.\.ref" output
9899'
99100
100101test_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" &&
102103 test_might_fail git branch -D goodref &&
103104 git branch goodref &&
104105 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' '
109110'
110111
111112test_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" &&
114116 git branch -m broken...ref renamed &&
115117 test_cmp_rev main renamed &&
116118 git branch >output 2>error &&
@@ -119,7 +121,7 @@ test_expect_failure 'branch -m can rename from a bad ref name' '
119121'
120122
121123test_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" &&
123125 test_must_fail git push "file://$(pwd)" HEAD:refs/heads/broken...ref &&
124126 git branch >output 2>error &&
125127 ! grep -e "broken\.\.\.ref" error &&
@@ -139,7 +141,7 @@ test_expect_failure 'push --mirror can delete badly named ref' '
139141 cd dest &&
140142 test_commit two &&
141143 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
143145 ) &&
144146 git -C src push --mirror "file://$top/dest" &&
145147 git -C dest branch >output 2>error &&
@@ -148,9 +150,9 @@ test_expect_failure 'push --mirror can delete badly named ref' '
148150'
149151
150152test_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" &&
152154 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 &&
154156 printf "ref: refs/heads/broken...ref\n" >.git/refs/tags/shadow &&
155157 test_when_finished "rm -f .git/refs/tags/shadow" &&
156158 git rev-parse --verify one >expect &&
@@ -160,8 +162,8 @@ test_expect_success 'rev-parse skips symref pointing to broken name' '
160162'
161163
162164test_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" &&
165167 printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
166168 test_when_finished "rm -f .git/refs/heads/badname" &&
167169 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' '
176178'
177179
178180test_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" &&
181183 git update-ref -d refs/heads/broken...ref >output 2>error &&
182184 test_must_be_empty output &&
183185 test_must_be_empty error &&
@@ -187,8 +189,8 @@ test_expect_success 'update-ref -d can delete broken name' '
187189'
188190
189191test_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" &&
192194 git branch -d broken...ref >output 2>error &&
193195 test_i18ngrep "Deleted branch broken...ref (was broken)" output &&
194196 test_must_be_empty error &&
@@ -198,8 +200,9 @@ test_expect_success 'branch -d can delete broken name' '
198200'
199201
200202test_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" &&
203206 printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
204207 test_when_finished "rm -f .git/refs/heads/badname" &&
205208 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'
209212'
210213
211214test_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" &&
214218 printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
215219 test_when_finished "rm -f .git/refs/heads/badname" &&
216220 git branch -d badname >output 2>error &&
@@ -238,8 +242,9 @@ test_expect_success 'branch -d can delete dangling symref to broken name' '
238242'
239243
240244test_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" &&
243248 printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
244249 test_when_finished "rm -f .git/refs/heads/badname" &&
245250 git update-ref -d refs/heads/badname >output 2>error &&
0 commit comments