]> git.ipfire.org Git - thirdparty/git.git/blob - t/t5506-remote-groups.sh
t2104: style fixes
[thirdparty/git.git] / t / t5506-remote-groups.sh
1 #!/bin/sh
2
3 test_description='git remote group handling'
4 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
5 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
6
7 TEST_PASSES_SANITIZE_LEAK=true
8 . ./test-lib.sh
9
10 mark() {
11 echo "$1" >mark
12 }
13
14 update_repo() {
15 (cd $1 &&
16 echo content >>file &&
17 git add file &&
18 git commit -F ../mark)
19 }
20
21 update_repos() {
22 update_repo one $1 &&
23 update_repo two $1
24 }
25
26 repo_fetched() {
27 if test "$(git log -1 --pretty=format:%s $1 --)" = "$(cat mark)"; then
28 echo >&2 "repo was fetched: $1"
29 return 0
30 fi
31 echo >&2 "repo was not fetched: $1"
32 return 1
33 }
34
35 test_expect_success 'setup' '
36 mkdir one && (cd one && git init) &&
37 mkdir two && (cd two && git init) &&
38 git remote add -m main one one &&
39 git remote add -m main two two
40 '
41
42 test_expect_success 'no group updates all' '
43 mark update-all &&
44 update_repos &&
45 git remote update &&
46 repo_fetched one &&
47 repo_fetched two
48 '
49
50 test_expect_success 'nonexistent group produces error' '
51 mark nonexistent &&
52 update_repos &&
53 test_must_fail git remote update nonexistent &&
54 ! repo_fetched one &&
55 ! repo_fetched two
56 '
57
58 test_expect_success 'updating group updates all members (remote update)' '
59 mark group-all &&
60 update_repos &&
61 git config --add remotes.all one &&
62 git config --add remotes.all two &&
63 git remote update all &&
64 repo_fetched one &&
65 repo_fetched two
66 '
67
68 test_expect_success 'updating group updates all members (fetch)' '
69 mark fetch-group-all &&
70 update_repos &&
71 git fetch all &&
72 repo_fetched one &&
73 repo_fetched two
74 '
75
76 test_expect_success 'updating group does not update non-members (remote update)' '
77 mark group-some &&
78 update_repos &&
79 git config --add remotes.some one &&
80 git remote update some &&
81 repo_fetched one &&
82 ! repo_fetched two
83 '
84
85 test_expect_success 'updating group does not update non-members (fetch)' '
86 mark fetch-group-some &&
87 update_repos &&
88 git config --add remotes.some one &&
89 git remote update some &&
90 repo_fetched one &&
91 ! repo_fetched two
92 '
93
94 test_expect_success 'updating remote name updates that remote' '
95 mark remote-name &&
96 update_repos &&
97 git remote update one &&
98 repo_fetched one &&
99 ! repo_fetched two
100 '
101
102 test_expect_success 'updating group in parallel with a duplicate remote does not fail (fetch)' '
103 mark fetch-group-duplicate &&
104 update_repo one &&
105 git config --add remotes.duplicate one &&
106 git config --add remotes.duplicate one &&
107 git -c fetch.parallel=2 remote update duplicate &&
108 repo_fetched one
109 '
110
111 test_done