Sync with 2.42.2
[git.git] / t / t5506-remote-groups.sh
blob0e176175a353571428bcf2ca505fa116564f80a3
1 #!/bin/sh
3 test_description='git remote group handling'
4 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
5 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
7 TEST_PASSES_SANITIZE_LEAK=true
8 . ./test-lib.sh
10 mark() {
11 echo "$1" >mark
14 update_repo() {
15 (cd $1 &&
16 echo content >>file &&
17 git add file &&
18 git commit -F ../mark)
21 update_repos() {
22 update_repo one $1 &&
23 update_repo two $1
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
31 echo >&2 "repo was not fetched: $1"
32 return 1
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
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
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
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
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
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
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
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
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
111 test_done