]> git.ipfire.org Git - thirdparty/git.git/blame - t/t5900-repo-selection.sh
The third batch
[thirdparty/git.git] / t / t5900-repo-selection.sh
CommitLineData
b3256eb8
JK
1#!/bin/sh
2
3test_description='selecting remote repo in ambiguous cases'
e75d2f7f
ÆAB
4
5TEST_PASSES_SANITIZE_LEAK=true
b3256eb8
JK
6. ./test-lib.sh
7
8reset() {
9 rm -rf foo foo.git fetch clone
10}
11
12make_tree() {
13 git init "$1" &&
14 (cd "$1" && test_commit "$1")
15}
16
17make_bare() {
18 git init --bare "$1" &&
19 (cd "$1" &&
14a771ee 20 tree=$(git hash-object -w -t tree /dev/null) &&
b3256eb8
JK
21 commit=$(echo "$1" | git commit-tree $tree) &&
22 git update-ref HEAD $commit
23 )
24}
25
26get() {
27 git init --bare fetch &&
28 (cd fetch && git fetch "../$1") &&
29 git clone "$1" clone
30}
31
32check() {
33 echo "$1" >expect &&
34 (cd fetch && git log -1 --format=%s FETCH_HEAD) >actual.fetch &&
35 (cd clone && git log -1 --format=%s HEAD) >actual.clone &&
36 test_cmp expect actual.fetch &&
37 test_cmp expect actual.clone
38}
39
40test_expect_success 'find .git dir in worktree' '
41 reset &&
42 make_tree foo &&
43 get foo &&
44 check foo
45'
46
47test_expect_success 'automagically add .git suffix' '
48 reset &&
49 make_bare foo.git &&
50 get foo &&
51 check foo.git
52'
53
54test_expect_success 'automagically add .git suffix to worktree' '
55 reset &&
56 make_tree foo.git &&
57 get foo &&
58 check foo.git
59'
60
61test_expect_success 'prefer worktree foo over bare foo.git' '
62 reset &&
63 make_tree foo &&
64 make_bare foo.git &&
65 get foo &&
66 check foo
67'
68
69test_expect_success 'prefer bare foo over bare foo.git' '
70 reset &&
71 make_bare foo &&
72 make_bare foo.git &&
73 get foo &&
74 check foo
75'
76
77test_expect_success 'disambiguate with full foo.git' '
78 reset &&
79 make_bare foo &&
80 make_bare foo.git &&
81 get foo.git &&
82 check foo.git
83'
84
85test_expect_success 'we are not fooled by non-git foo directory' '
86 reset &&
87 make_bare foo.git &&
88 mkdir foo &&
89 get foo &&
90 check foo.git
91'
92
93test_expect_success 'prefer inner .git over outer bare' '
94 reset &&
95 make_tree foo &&
96 make_bare foo.git &&
97 mv foo/.git foo.git &&
98 get foo.git &&
99 check foo
100'
101
102test_done