]> git.ipfire.org Git - thirdparty/git.git/blob - t/t5527-fetch-odd-refs.sh
path.c: don't call the match function without value in trie_find()
[thirdparty/git.git] / t / t5527-fetch-odd-refs.sh
1 #!/bin/sh
2
3 test_description='test fetching of oddly-named refs'
4 . ./test-lib.sh
5
6 # afterwards we will have:
7 # HEAD - two
8 # refs/for/refs/heads/master - one
9 # refs/heads/master - three
10 test_expect_success 'setup repo with odd suffix ref' '
11 echo content >file &&
12 git add . &&
13 git commit -m one &&
14 git update-ref refs/for/refs/heads/master HEAD &&
15 echo content >>file &&
16 git commit -a -m two &&
17 echo content >>file &&
18 git commit -a -m three &&
19 git checkout HEAD^
20 '
21
22 test_expect_success 'suffix ref is ignored during fetch' '
23 git clone --bare file://"$PWD" suffix &&
24 echo three >expect &&
25 git --git-dir=suffix log -1 --format=%s refs/heads/master >actual &&
26 test_cmp expect actual
27 '
28
29 test_expect_success 'try to create repo with absurdly long refname' '
30 ref240=$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID/$ZERO_OID &&
31 ref1440=$ref240/$ref240/$ref240/$ref240/$ref240/$ref240 &&
32 git init long &&
33 (
34 cd long &&
35 test_commit long &&
36 test_commit master
37 ) &&
38 if git -C long update-ref refs/heads/$ref1440 long; then
39 test_set_prereq LONG_REF
40 else
41 echo >&2 "long refs not supported"
42 fi
43 '
44
45 test_expect_success LONG_REF 'fetch handles extremely long refname' '
46 git fetch long refs/heads/*:refs/remotes/long/* &&
47 cat >expect <<-\EOF &&
48 long
49 master
50 EOF
51 git for-each-ref --format="%(subject)" refs/remotes/long >actual &&
52 test_cmp expect actual
53 '
54
55 test_expect_success LONG_REF 'push handles extremely long refname' '
56 git push long :refs/heads/$ref1440 &&
57 git -C long for-each-ref --format="%(subject)" refs/heads >actual &&
58 echo master >expect &&
59 test_cmp expect actual
60 '
61
62 test_done