]> git.ipfire.org Git - thirdparty/git.git/blame - t/t1402-check-ref-format.sh
Merge branch 'nd/pretty-commit-log-message'
[thirdparty/git.git] / t / t1402-check-ref-format.sh
CommitLineData
58a05c74
JN
1#!/bin/sh
2
3test_description='Test git check-ref-format'
4
5. ./test-lib.sh
6
7valid_ref() {
42afe62d
JS
8 prereq=
9 case $1 in
10 [A-Z]*)
11 prereq=$1
12 shift
13 esac
14 test_expect_success $prereq "ref name '$1' is valid${2:+ with options $2}" "
15 git check-ref-format $2 '$1'
16 "
58a05c74
JN
17}
18invalid_ref() {
42afe62d
JS
19 prereq=
20 case $1 in
21 [A-Z]*)
22 prereq=$1
23 shift
24 esac
25 test_expect_success $prereq "ref name '$1' is invalid${2:+ with options $2}" "
26 test_must_fail git check-ref-format $2 '$1'
27 "
58a05c74
JN
28}
29
f9b1a5b9 30invalid_ref ''
42afe62d
JS
31invalid_ref NOT_MINGW '/'
32invalid_ref NOT_MINGW '/' --allow-onelevel
33invalid_ref NOT_MINGW '/' --normalize
34invalid_ref NOT_MINGW '/' '--allow-onelevel --normalize'
58a05c74 35valid_ref 'foo/bar/baz'
a40e6fb6
MH
36valid_ref 'foo/bar/baz' --normalize
37invalid_ref 'refs///heads/foo'
38valid_ref 'refs///heads/foo' --normalize
58a05c74 39invalid_ref 'heads/foo/'
42afe62d
JS
40invalid_ref NOT_MINGW '/heads/foo'
41valid_ref NOT_MINGW '/heads/foo' --normalize
a40e6fb6
MH
42invalid_ref '///heads/foo'
43valid_ref '///heads/foo' --normalize
58a05c74 44invalid_ref './foo'
e4ed6105
MH
45invalid_ref './foo/bar'
46invalid_ref 'foo/./bar'
47invalid_ref 'foo/bar/.'
58a05c74
JN
48invalid_ref '.refs/foo'
49invalid_ref 'heads/foo..bar'
50invalid_ref 'heads/foo?bar'
51valid_ref 'foo./bar'
52invalid_ref 'heads/foo.lock'
f9b1a5b9 53invalid_ref 'heads///foo.lock'
7e9d2fe9
MH
54invalid_ref 'foo.lock/bar'
55invalid_ref 'foo.lock///bar'
58a05c74
JN
56valid_ref 'heads/foo@bar'
57invalid_ref 'heads/v@{ation'
58invalid_ref 'heads/foo\bar'
f3738c1c
MH
59invalid_ref "$(printf 'heads/foo\t')"
60invalid_ref "$(printf 'heads/foo\177')"
61valid_ref "$(printf 'heads/fu\303\237')"
e4ed6105
MH
62invalid_ref 'heads/*foo/bar' --refspec-pattern
63invalid_ref 'heads/foo*/bar' --refspec-pattern
64invalid_ref 'heads/f*o/bar' --refspec-pattern
65
66ref='foo'
67invalid_ref "$ref"
68valid_ref "$ref" --allow-onelevel
69invalid_ref "$ref" --refspec-pattern
70valid_ref "$ref" '--refspec-pattern --allow-onelevel'
a40e6fb6
MH
71invalid_ref "$ref" --normalize
72valid_ref "$ref" '--allow-onelevel --normalize'
e4ed6105
MH
73
74ref='foo/bar'
75valid_ref "$ref"
76valid_ref "$ref" --allow-onelevel
77valid_ref "$ref" --refspec-pattern
78valid_ref "$ref" '--refspec-pattern --allow-onelevel'
a40e6fb6 79valid_ref "$ref" --normalize
e4ed6105
MH
80
81ref='foo/*'
82invalid_ref "$ref"
83invalid_ref "$ref" --allow-onelevel
84valid_ref "$ref" --refspec-pattern
85valid_ref "$ref" '--refspec-pattern --allow-onelevel'
86
87ref='*/foo'
88invalid_ref "$ref"
89invalid_ref "$ref" --allow-onelevel
90valid_ref "$ref" --refspec-pattern
91valid_ref "$ref" '--refspec-pattern --allow-onelevel'
a40e6fb6
MH
92invalid_ref "$ref" --normalize
93valid_ref "$ref" '--refspec-pattern --normalize'
e4ed6105
MH
94
95ref='foo/*/bar'
96invalid_ref "$ref"
97invalid_ref "$ref" --allow-onelevel
98valid_ref "$ref" --refspec-pattern
99valid_ref "$ref" '--refspec-pattern --allow-onelevel'
100
101ref='*'
102invalid_ref "$ref"
8d9c5010 103invalid_ref "$ref" --allow-onelevel
e4ed6105
MH
104invalid_ref "$ref" --refspec-pattern
105valid_ref "$ref" '--refspec-pattern --allow-onelevel'
106
107ref='foo/*/*'
108invalid_ref "$ref" --refspec-pattern
109invalid_ref "$ref" '--refspec-pattern --allow-onelevel'
110
111ref='*/foo/*'
112invalid_ref "$ref" --refspec-pattern
113invalid_ref "$ref" '--refspec-pattern --allow-onelevel'
114
115ref='*/*/foo'
116invalid_ref "$ref" --refspec-pattern
117invalid_ref "$ref" '--refspec-pattern --allow-onelevel'
118
119ref='/foo'
42afe62d
JS
120invalid_ref NOT_MINGW "$ref"
121invalid_ref NOT_MINGW "$ref" --allow-onelevel
122invalid_ref NOT_MINGW "$ref" --refspec-pattern
123invalid_ref NOT_MINGW "$ref" '--refspec-pattern --allow-onelevel'
124invalid_ref NOT_MINGW "$ref" --normalize
125valid_ref NOT_MINGW "$ref" '--allow-onelevel --normalize'
126invalid_ref NOT_MINGW "$ref" '--refspec-pattern --normalize'
127valid_ref NOT_MINGW "$ref" '--refspec-pattern --allow-onelevel --normalize'
58a05c74
JN
128
129test_expect_success "check-ref-format --branch @{-1}" '
130 T=$(git write-tree) &&
131 sha1=$(echo A | git commit-tree $T) &&
132 git update-ref refs/heads/master $sha1 &&
a48fcd83 133 git update-ref refs/remotes/origin/master $sha1 &&
58a05c74
JN
134 git checkout master &&
135 git checkout origin/master &&
136 git checkout master &&
137 refname=$(git check-ref-format --branch @{-1}) &&
138 test "$refname" = "$sha1" &&
139 refname2=$(git check-ref-format --branch @{-2}) &&
140 test "$refname2" = master'
141
49cc460d
JN
142test_expect_success 'check-ref-format --branch from subdir' '
143 mkdir subdir &&
144
145 T=$(git write-tree) &&
146 sha1=$(echo A | git commit-tree $T) &&
147 git update-ref refs/heads/master $sha1 &&
a48fcd83 148 git update-ref refs/remotes/origin/master $sha1 &&
49cc460d
JN
149 git checkout master &&
150 git checkout origin/master &&
151 git checkout master &&
152 refname=$(
153 cd subdir &&
154 git check-ref-format --branch @{-1}
155 ) &&
156 test "$refname" = "$sha1"
157'
158
38eedc63 159valid_ref_normalized() {
42afe62d
JS
160 prereq=
161 case $1 in
162 [A-Z]*)
163 prereq=$1
164 shift
165 esac
166 test_expect_success $prereq "ref name '$1' simplifies to '$2'" "
a40e6fb6 167 refname=\$(git check-ref-format --normalize '$1') &&
42afe62d
JS
168 test \"\$refname\" = '$2'
169 "
38eedc63
JH
170}
171invalid_ref_normalized() {
42afe62d
JS
172 prereq=
173 case $1 in
174 [A-Z]*)
175 prereq=$1
176 shift
177 esac
178 test_expect_success $prereq "check-ref-format --normalize rejects '$1'" "
179 test_must_fail git check-ref-format --normalize '$1'
180 "
38eedc63
JH
181}
182
183valid_ref_normalized 'heads/foo' 'heads/foo'
184valid_ref_normalized 'refs///heads/foo' 'refs/heads/foo'
42afe62d 185valid_ref_normalized NOT_MINGW '/heads/foo' 'heads/foo'
2f633f41 186valid_ref_normalized '///heads/foo' 'heads/foo'
38eedc63 187invalid_ref_normalized 'foo'
42afe62d 188invalid_ref_normalized NOT_MINGW '/foo'
38eedc63
JH
189invalid_ref_normalized 'heads/foo/../bar'
190invalid_ref_normalized 'heads/./foo'
191invalid_ref_normalized 'heads\foo'
f9b1a5b9
MH
192invalid_ref_normalized 'heads/foo.lock'
193invalid_ref_normalized 'heads///foo.lock'
7e9d2fe9
MH
194invalid_ref_normalized 'foo.lock/bar'
195invalid_ref_normalized 'foo.lock///bar'
38eedc63 196
58a05c74 197test_done