]>
Commit | Line | Data |
---|---|---|
46220ca1 JH |
1 | #!/bin/sh |
2 | ||
3 | test_description='refspec parsing' | |
4 | ||
f36d4f83 | 5 | TEST_PASSES_SANITIZE_LEAK=true |
46220ca1 JH |
6 | . ./test-lib.sh |
7 | ||
8 | test_refspec () { | |
46220ca1 JH |
9 | kind=$1 refspec=$2 expect=$3 |
10 | git config remote.frotz.url "." && | |
11 | git config --remove-section remote.frotz && | |
12 | git config remote.frotz.url "." && | |
13 | git config "remote.frotz.$kind" "$refspec" && | |
14 | if test "$expect" != invalid | |
15 | then | |
16 | title="$kind $refspec" | |
17 | test='git ls-remote frotz' | |
18 | else | |
19 | title="$kind $refspec (invalid)" | |
20 | test='test_must_fail git ls-remote frotz' | |
21 | fi | |
22 | test_expect_success "$title" "$test" | |
23 | } | |
24 | ||
25 | test_refspec push '' invalid | |
a83619d6 PB |
26 | test_refspec push ':' |
27 | test_refspec push '::' invalid | |
28 | test_refspec push '+:' | |
46220ca1 JH |
29 | |
30 | test_refspec fetch '' | |
31 | test_refspec fetch ':' | |
a83619d6 | 32 | test_refspec fetch '::' invalid |
46220ca1 JH |
33 | |
34 | test_refspec push 'refs/heads/*:refs/remotes/frotz/*' | |
35 | test_refspec push 'refs/heads/*:refs/remotes/frotz' invalid | |
36 | test_refspec push 'refs/heads:refs/remotes/frotz/*' invalid | |
bc925ce3 | 37 | test_refspec push 'refs/heads/main:refs/remotes/frotz/xyzzy' |
46220ca1 JH |
38 | |
39 | ||
40 | # These have invalid LHS, but we do not have a formal "valid sha-1 | |
41 | # expression syntax checker" so they are not checked with the current | |
42 | # code. They will be caught downstream anyway, but we may want to | |
43 | # have tighter check later... | |
44 | ||
bc925ce3 | 45 | : test_refspec push 'refs/heads/main::refs/remotes/frotz/xyzzy' invalid |
46220ca1 JH |
46 | : test_refspec push 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid |
47 | ||
48 | test_refspec fetch 'refs/heads/*:refs/remotes/frotz/*' | |
49 | test_refspec fetch 'refs/heads/*:refs/remotes/frotz' invalid | |
50 | test_refspec fetch 'refs/heads:refs/remotes/frotz/*' invalid | |
bc925ce3 JS |
51 | test_refspec fetch 'refs/heads/main:refs/remotes/frotz/xyzzy' |
52 | test_refspec fetch 'refs/heads/main::refs/remotes/frotz/xyzzy' invalid | |
46220ca1 JH |
53 | test_refspec fetch 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid |
54 | ||
bc925ce3 JS |
55 | test_refspec push 'main~1:refs/remotes/frotz/backup' |
56 | test_refspec fetch 'main~1:refs/remotes/frotz/backup' invalid | |
46220ca1 JH |
57 | test_refspec push 'HEAD~4:refs/remotes/frotz/new' |
58 | test_refspec fetch 'HEAD~4:refs/remotes/frotz/new' invalid | |
59 | ||
60 | test_refspec push 'HEAD' | |
61 | test_refspec fetch 'HEAD' | |
374fbaef FC |
62 | test_refspec push '@' |
63 | test_refspec fetch '@' | |
46220ca1 JH |
64 | test_refspec push 'refs/heads/ nitfol' invalid |
65 | test_refspec fetch 'refs/heads/ nitfol' invalid | |
66 | ||
67 | test_refspec push 'HEAD:' invalid | |
68 | test_refspec fetch 'HEAD:' | |
69 | test_refspec push 'refs/heads/ nitfol:' invalid | |
70 | test_refspec fetch 'refs/heads/ nitfol:' invalid | |
71 | ||
72 | test_refspec push ':refs/remotes/frotz/deleteme' | |
73 | test_refspec fetch ':refs/remotes/frotz/HEAD-to-me' | |
74 | test_refspec push ':refs/remotes/frotz/delete me' invalid | |
75 | test_refspec fetch ':refs/remotes/frotz/HEAD to me' invalid | |
76 | ||
cd377f45 JK |
77 | test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*-blah' |
78 | test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*-blah' | |
abd2bde7 | 79 | |
cd377f45 JK |
80 | test_refspec fetch 'refs/heads*/for-linus:refs/remotes/mine/*' |
81 | test_refspec push 'refs/heads*/for-linus:refs/remotes/mine/*' | |
abd2bde7 DB |
82 | |
83 | test_refspec fetch 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid | |
84 | test_refspec push 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid | |
85 | ||
cd377f45 JK |
86 | test_refspec fetch 'refs/heads/*g*/for-linus:refs/remotes/mine/*' invalid |
87 | test_refspec push 'refs/heads/*g*/for-linus:refs/remotes/mine/*' invalid | |
88 | ||
abd2bde7 DB |
89 | test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*' |
90 | test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*' | |
91 | ||
dde8a902 DT |
92 | good=$(printf '\303\204') |
93 | test_refspec fetch "refs/heads/${good}" | |
94 | bad=$(printf '\011tab') | |
95 | test_refspec fetch "refs/heads/${bad}" invalid | |
96 | ||
46220ca1 | 97 | test_done |