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