t1403: split 'show-ref --exists' tests into a separate file
The test file for git-show-ref(1), `t1403-show-ref.sh`, contains a group of tests for the '--exists' flag. To improve organization and to prepare for refactoring these tests to be shareable, move the '--exists' tests and their corresponding setup logic into a self-contained test suite, `t1422-show-ref-exists.sh`. This is a pure code-movement refactoring with no change in test coverage or behavior. Mentored-by: Patrick Steinhardt <ps@pks.im> Mentored-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Meet Soni <meetsoni3017@gmail.com> Acked-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Meet Soni committed
Aug 26, 2025 at 12:11 UTC
0749b93ab369cda5e316da1c2a87d325ce02fe1d
3 files changed
+85
-66
t/meson.build
+2
-1
@@ -205,6 +205,7 @@ integration_tests = [
205
't1419-exclude-refs.sh',
206
't1420-lost-found.sh',
207
't1421-reflog-write.sh',
208
+ 't1422-show-ref-exists.sh',
209
't1430-bad-ref-name.sh',
210
't1450-fsck.sh',
211
't1451-fsck-buffer.sh',
@@ -1216,4 +1217,4 @@ if perl.found() and time.found()
1217
timeout: 0,
1218
)
1219
endforeach
1219
-endif
\ No newline at end of file
1220
+endif
t/t1403-show-ref.sh
-65
@@ -228,69 +228,4 @@ test_expect_success 'show-ref sub-modes are mutually exclusive' '
228
grep "cannot be used together" err
229
'
230
231
-test_expect_success '--exists with existing reference' '
232
- git show-ref --exists refs/heads/$GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
233
-'
234
-
235
-test_expect_success '--exists with missing reference' '
236
- test_expect_code 2 git show-ref --exists refs/heads/does-not-exist
237
-'
238
-
239
-test_expect_success '--exists does not use DWIM' '
240
- test_expect_code 2 git show-ref --exists $GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME 2>err &&
241
- grep "reference does not exist" err
242
-'
243
-
244
-test_expect_success '--exists with HEAD' '
245
- git show-ref --exists HEAD
246
-'
247
-
248
-test_expect_success '--exists with bad reference name' '
249
- test_when_finished "git update-ref -d refs/heads/bad...name" &&
250
- new_oid=$(git rev-parse HEAD) &&
251
- test-tool ref-store main update-ref msg refs/heads/bad...name $new_oid $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
252
- git show-ref --exists refs/heads/bad...name
253
-'
254
-
255
-test_expect_success '--exists with arbitrary symref' '
256
- test_when_finished "git symbolic-ref -d refs/symref" &&
257
- git symbolic-ref refs/symref refs/heads/$GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME &&
258
- git show-ref --exists refs/symref
259
-'
260
-
261
-test_expect_success '--exists with dangling symref' '
262
- test_when_finished "git symbolic-ref -d refs/heads/dangling" &&
263
- git symbolic-ref refs/heads/dangling refs/heads/does-not-exist &&
264
- git show-ref --exists refs/heads/dangling
265
-'
266
-
267
-test_expect_success '--exists with nonexistent object ID' '
268
- test-tool ref-store main update-ref msg refs/heads/missing-oid $(test_oid 001) $ZERO_OID REF_SKIP_OID_VERIFICATION &&
269
- git show-ref --exists refs/heads/missing-oid
270
-'
271
-
272
-test_expect_success '--exists with non-commit object' '
273
- tree_oid=$(git rev-parse HEAD^{tree}) &&
274
- test-tool ref-store main update-ref msg refs/heads/tree ${tree_oid} $ZERO_OID REF_SKIP_OID_VERIFICATION &&
275
- git show-ref --exists refs/heads/tree
276
-'
277
-
278
-test_expect_success '--exists with directory fails with generic error' '
279
- cat >expect <<-EOF &&
280
- error: reference does not exist
281
- EOF
282
- test_expect_code 2 git show-ref --exists refs/heads 2>err &&
283
- test_cmp expect err
284
-'
285
-
286
-test_expect_success '--exists with non-existent special ref' '
287
- test_expect_code 2 git show-ref --exists FETCH_HEAD
288
-'
289
-
290
-test_expect_success '--exists with existing special ref' '
291
- test_when_finished "rm .git/FETCH_HEAD" &&
292
- git rev-parse HEAD >.git/FETCH_HEAD &&
293
- git show-ref --exists FETCH_HEAD
294
-'
295
-
231
test_done
t/t1422-show-ref-exists.sh
new
+83
@@ -0,0 +1,83 @@
1
+#!/bin/sh
2
+
3
+test_description='show-ref --exists'
4
+GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
5
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
6
+
7
+. ./test-lib.sh
8
+
9
+test_expect_success setup '
10
+ test_commit --annotate A &&
11
+ git checkout -b side &&
12
+ test_commit --annotate B &&
13
+ git checkout main &&
14
+ test_commit C &&
15
+ git branch B A^0
16
+'
17
+
18
+test_expect_success '--exists with existing reference' '
19
+ git show-ref --exists refs/heads/$GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
20
+'
21
+
22
+test_expect_success '--exists with missing reference' '
23
+ test_expect_code 2 git show-ref --exists refs/heads/does-not-exist
24
+'
25
+
26
+test_expect_success '--exists does not use DWIM' '
27
+ test_expect_code 2 git show-ref --exists $GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME 2>err &&
28
+ grep "reference does not exist" err
29
+'
30
+
31
+test_expect_success '--exists with HEAD' '
32
+ git show-ref --exists HEAD
33
+'
34
+
35
+test_expect_success '--exists with bad reference name' '
36
+ test_when_finished "git update-ref -d refs/heads/bad...name" &&
37
+ new_oid=$(git rev-parse HEAD) &&
38
+ test-tool ref-store main update-ref msg refs/heads/bad...name $new_oid $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
39
+ git show-ref --exists refs/heads/bad...name
40
+'
41
+
42
+test_expect_success '--exists with arbitrary symref' '
43
+ test_when_finished "git symbolic-ref -d refs/symref" &&
44
+ git symbolic-ref refs/symref refs/heads/$GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME &&
45
+ git show-ref --exists refs/symref
46
+'
47
+
48
+test_expect_success '--exists with dangling symref' '
49
+ test_when_finished "git symbolic-ref -d refs/heads/dangling" &&
50
+ git symbolic-ref refs/heads/dangling refs/heads/does-not-exist &&
51
+ git show-ref --exists refs/heads/dangling
52
+'
53
+
54
+test_expect_success '--exists with nonexistent object ID' '
55
+ test-tool ref-store main update-ref msg refs/heads/missing-oid $(test_oid 001) $ZERO_OID REF_SKIP_OID_VERIFICATION &&
56
+ git show-ref --exists refs/heads/missing-oid
57
+'
58
+
59
+test_expect_success '--exists with non-commit object' '
60
+ tree_oid=$(git rev-parse HEAD^{tree}) &&
61
+ test-tool ref-store main update-ref msg refs/heads/tree ${tree_oid} $ZERO_OID REF_SKIP_OID_VERIFICATION &&
62
+ git show-ref --exists refs/heads/tree
63
+'
64
+
65
+test_expect_success '--exists with directory fails with generic error' '
66
+ cat >expect <<-EOF &&
67
+ error: reference does not exist
68
+ EOF
69
+ test_expect_code 2 git show-ref --exists refs/heads 2>err &&
70
+ test_cmp expect err
71
+'
72
+
73
+test_expect_success '--exists with non-existent special ref' '
74
+ test_expect_code 2 git show-ref --exists FETCH_HEAD
75
+'
76
+
77
+test_expect_success '--exists with existing special ref' '
78
+ test_when_finished "rm .git/FETCH_HEAD" &&
79
+ git rev-parse HEAD >.git/FETCH_HEAD &&
80
+ git show-ref --exists FETCH_HEAD
81
+'
82
+
83
+test_done