blob: 0e176175a353571428bcf2ca505fa116564f80a3 [file] [log] [blame]
Jeff King27845e92009-04-06 16:18:23 -04001#!/bin/sh
2
3test_description='git remote group handling'
Johannes Schindelin3275f4e2020-11-18 23:44:31 +00004GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
Johannes Schindelin334afbc2020-11-18 23:44:19 +00005export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
6
Ævar Arnfjörð Bjarmasone75d2f72022-04-13 22:01:48 +02007TEST_PASSES_SANITIZE_LEAK=true
Jeff King27845e92009-04-06 16:18:23 -04008. ./test-lib.sh
9
10mark() {
11 echo "$1" >mark
12}
13
14update_repo() {
15 (cd $1 &&
16 echo content >>file &&
17 git add file &&
18 git commit -F ../mark)
19}
20
21update_repos() {
22 update_repo one $1 &&
23 update_repo two $1
24}
25
26repo_fetched() {
Elia Pintoe15243c2015-12-23 14:45:54 +010027 if test "$(git log -1 --pretty=format:%s $1 --)" = "$(cat mark)"; then
Jeff King27845e92009-04-06 16:18:23 -040028 echo >&2 "repo was fetched: $1"
29 return 0
30 fi
31 echo >&2 "repo was not fetched: $1"
32 return 1
33}
34
35test_expect_success 'setup' '
36 mkdir one && (cd one && git init) &&
37 mkdir two && (cd two && git init) &&
Johannes Schindelin3275f4e2020-11-18 23:44:31 +000038 git remote add -m main one one &&
39 git remote add -m main two two
Jeff King27845e92009-04-06 16:18:23 -040040'
41
42test_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
Dmitry Ivankov7be8b3b2011-06-16 19:42:48 +060050test_expect_success 'nonexistent group produces error' '
51 mark nonexistent &&
Jeff King27845e92009-04-06 16:18:23 -040052 update_repos &&
Dmitry Ivankov7be8b3b2011-06-16 19:42:48 +060053 test_must_fail git remote update nonexistent &&
Jeff King27845e92009-04-06 16:18:23 -040054 ! repo_fetched one &&
55 ! repo_fetched two
56'
57
Björn Gustavsson9c4a0362009-11-09 21:09:56 +010058test_expect_success 'updating group updates all members (remote update)' '
Jeff King27845e92009-04-06 16:18:23 -040059 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
Björn Gustavsson9c4a0362009-11-09 21:09:56 +010068test_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
76test_expect_success 'updating group does not update non-members (remote update)' '
Jeff King27845e92009-04-06 16:18:23 -040077 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
Björn Gustavsson9c4a0362009-11-09 21:09:56 +010085test_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
Jeff King27845e92009-04-06 16:18:23 -040094test_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
Calvin Wan06a668c2023-01-19 22:05:38 +0000102test_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
Jeff King27845e92009-04-06 16:18:23 -0400111test_done