]>
Commit | Line | Data |
---|---|---|
46220ca1 JH |
1 | #!/bin/sh |
2 | ||
3 | test_description='refspec parsing' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | test_refspec () { | |
46220ca1 JH |
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 | |
14 | then | |
15 | title="$kind $refspec" | |
16 | test='git ls-remote frotz' | |
17 | else | |
18 | title="$kind $refspec (invalid)" | |
19 | test='test_must_fail git ls-remote frotz' | |
20 | fi | |
21 | test_expect_success "$title" "$test" | |
22 | } | |
23 | ||
24 | test_refspec push '' invalid | |
a83619d6 PB |
25 | test_refspec push ':' |
26 | test_refspec push '::' invalid | |
27 | test_refspec push '+:' | |
46220ca1 JH |
28 | |
29 | test_refspec fetch '' | |
30 | test_refspec fetch ':' | |
a83619d6 | 31 | test_refspec fetch '::' invalid |
46220ca1 JH |
32 | |
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/master:refs/remotes/frotz/xyzzy' | |
37 | ||
38 | ||
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... | |
43 | ||
44 | : test_refspec push 'refs/heads/master::refs/remotes/frotz/xyzzy' invalid | |
45 | : test_refspec push 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid | |
46 | ||
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/master:refs/remotes/frotz/xyzzy' | |
51 | test_refspec fetch 'refs/heads/master::refs/remotes/frotz/xyzzy' invalid | |
52 | test_refspec fetch 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid | |
53 | ||
54 | test_refspec push 'master~1:refs/remotes/frotz/backup' | |
55 | test_refspec fetch 'master~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 | |
58 | ||
59 | test_refspec push 'HEAD' | |
60 | test_refspec fetch 'HEAD' | |
61 | test_refspec push 'refs/heads/ nitfol' invalid | |
62 | test_refspec fetch 'refs/heads/ nitfol' invalid | |
63 | ||
64 | test_refspec push 'HEAD:' invalid | |
65 | test_refspec fetch 'HEAD:' | |
66 | test_refspec push 'refs/heads/ nitfol:' invalid | |
67 | test_refspec fetch 'refs/heads/ nitfol:' invalid | |
68 | ||
69 | test_refspec push ':refs/remotes/frotz/deleteme' | |
70 | test_refspec fetch ':refs/remotes/frotz/HEAD-to-me' | |
71 | test_refspec push ':refs/remotes/frotz/delete me' invalid | |
72 | test_refspec fetch ':refs/remotes/frotz/HEAD to me' invalid | |
73 | ||
abd2bde7 DB |
74 | test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*-blah' invalid |
75 | test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*-blah' invalid | |
76 | ||
77 | test_refspec fetch 'refs/heads*/for-linus:refs/remotes/mine/*' invalid | |
78 | test_refspec push 'refs/heads*/for-linus:refs/remotes/mine/*' invalid | |
79 | ||
80 | test_refspec fetch 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid | |
81 | test_refspec push 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid | |
82 | ||
83 | test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*' | |
84 | test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*' | |
85 | ||
dde8a902 DT |
86 | good=$(printf '\303\204') |
87 | test_refspec fetch "refs/heads/${good}" | |
88 | bad=$(printf '\011tab') | |
89 | test_refspec fetch "refs/heads/${bad}" invalid | |
90 | ||
46220ca1 | 91 | test_done |