3 test_description
='refspec parsing'
8 kind
=$1 refspec
=$2 expect
=$3
9 git config remote.frotz.url
"." &&
10 git config
--remove-section remote.frotz
&&
11 git config remote.frotz.url
"." &&
12 git config
"remote.frotz.$kind" "$refspec" &&
13 if test "$expect" != invalid
15 title
="$kind $refspec"
16 test='git ls-remote frotz'
18 title
="$kind $refspec (invalid)"
19 test='test_must_fail git ls-remote frotz'
21 test_expect_success
"$title" "$test"
24 test_refspec push
'' invalid
26 test_refspec push
'::' invalid
27 test_refspec push
'+:'
30 test_refspec fetch
':'
31 test_refspec fetch
'::' invalid
33 test_refspec push
'refs/heads/*:refs/remotes/frotz/*'
34 test_refspec push
'refs/heads/*:refs/remotes/frotz' invalid
35 test_refspec push
'refs/heads:refs/remotes/frotz/*' invalid
36 test_refspec push
'refs/heads/main:refs/remotes/frotz/xyzzy'
39 # These have invalid LHS, but we do not have a formal "valid sha-1
40 # expression syntax checker" so they are not checked with the current
41 # code. They will be caught downstream anyway, but we may want to
42 # have tighter check later...
44 : test_refspec push
'refs/heads/main::refs/remotes/frotz/xyzzy' invalid
45 : test_refspec push
'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid
47 test_refspec fetch
'refs/heads/*:refs/remotes/frotz/*'
48 test_refspec fetch
'refs/heads/*:refs/remotes/frotz' invalid
49 test_refspec fetch
'refs/heads:refs/remotes/frotz/*' invalid
50 test_refspec fetch
'refs/heads/main:refs/remotes/frotz/xyzzy'
51 test_refspec fetch
'refs/heads/main::refs/remotes/frotz/xyzzy' invalid
52 test_refspec fetch
'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid
54 test_refspec push
'main~1:refs/remotes/frotz/backup'
55 test_refspec fetch
'main~1:refs/remotes/frotz/backup' invalid
56 test_refspec push
'HEAD~4:refs/remotes/frotz/new'
57 test_refspec fetch
'HEAD~4:refs/remotes/frotz/new' invalid
59 test_refspec push
'HEAD'
60 test_refspec fetch
'HEAD'
62 test_refspec fetch
'@'
63 test_refspec push
'refs/heads/ nitfol' invalid
64 test_refspec fetch
'refs/heads/ nitfol' invalid
66 test_refspec push
'HEAD:' invalid
67 test_refspec fetch
'HEAD:'
68 test_refspec push
'refs/heads/ nitfol:' invalid
69 test_refspec fetch
'refs/heads/ nitfol:' invalid
71 test_refspec push
':refs/remotes/frotz/deleteme'
72 test_refspec fetch
':refs/remotes/frotz/HEAD-to-me'
73 test_refspec push
':refs/remotes/frotz/delete me' invalid
74 test_refspec fetch
':refs/remotes/frotz/HEAD to me' invalid
76 test_refspec fetch
'refs/heads/*/for-linus:refs/remotes/mine/*-blah'
77 test_refspec push
'refs/heads/*/for-linus:refs/remotes/mine/*-blah'
79 test_refspec fetch
'refs/heads*/for-linus:refs/remotes/mine/*'
80 test_refspec push
'refs/heads*/for-linus:refs/remotes/mine/*'
82 test_refspec fetch
'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid
83 test_refspec push
'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid
85 test_refspec fetch
'refs/heads/*g*/for-linus:refs/remotes/mine/*' invalid
86 test_refspec push
'refs/heads/*g*/for-linus:refs/remotes/mine/*' invalid
88 test_refspec fetch
'refs/heads/*/for-linus:refs/remotes/mine/*'
89 test_refspec push
'refs/heads/*/for-linus:refs/remotes/mine/*'
91 good
=$
(printf '\303\204')
92 test_refspec fetch
"refs/heads/${good}"
93 bad
=$
(printf '\011tab')
94 test_refspec fetch
"refs/heads/${bad}" invalid