Merge branch 'maint'
[alt-git.git] / t / t5506-remote-groups.sh
blobb7b7ddaa403d7a06c0203b89e484d56d20863f4a
1 #!/bin/sh
3 test_description='git remote group handling'
4 . ./test-lib.sh
6 mark() {
7 echo "$1" >mark
10 update_repo() {
11 (cd $1 &&
12 echo content >>file &&
13 git add file &&
14 git commit -F ../mark)
17 update_repos() {
18 update_repo one $1 &&
19 update_repo two $1
22 repo_fetched() {
23 if test "`git log -1 --pretty=format:%s $1 --`" = "`cat mark`"; then
24 echo >&2 "repo was fetched: $1"
25 return 0
27 echo >&2 "repo was not fetched: $1"
28 return 1
31 test_expect_success 'setup' '
32 mkdir one && (cd one && git init) &&
33 mkdir two && (cd two && git init) &&
34 git remote add -m master one one &&
35 git remote add -m master two two
38 test_expect_success 'no group updates all' '
39 mark update-all &&
40 update_repos &&
41 git remote update &&
42 repo_fetched one &&
43 repo_fetched two
46 test_expect_success 'nonexistant group produces error' '
47 mark nonexistant &&
48 update_repos &&
49 test_must_fail git remote update nonexistant &&
50 ! repo_fetched one &&
51 ! repo_fetched two
54 test_expect_success 'updating group updates all members (remote update)' '
55 mark group-all &&
56 update_repos &&
57 git config --add remotes.all one &&
58 git config --add remotes.all two &&
59 git remote update all &&
60 repo_fetched one &&
61 repo_fetched two
64 test_expect_success 'updating group updates all members (fetch)' '
65 mark fetch-group-all &&
66 update_repos &&
67 git fetch all &&
68 repo_fetched one &&
69 repo_fetched two
72 test_expect_success 'updating group does not update non-members (remote update)' '
73 mark group-some &&
74 update_repos &&
75 git config --add remotes.some one &&
76 git remote update some &&
77 repo_fetched one &&
78 ! repo_fetched two
81 test_expect_success 'updating group does not update non-members (fetch)' '
82 mark fetch-group-some &&
83 update_repos &&
84 git config --add remotes.some one &&
85 git remote update some &&
86 repo_fetched one &&
87 ! repo_fetched two
90 test_expect_success 'updating remote name updates that remote' '
91 mark remote-name &&
92 update_repos &&
93 git remote update one &&
94 repo_fetched one &&
95 ! repo_fetched two
98 test_done