]>
Commit | Line | Data |
---|---|---|
27845e95 JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='git remote group handling' | |
3275f4e8 | 4 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
334afbc7 JS |
5 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
6 | ||
e75d2f7f | 7 | TEST_PASSES_SANITIZE_LEAK=true |
27845e95 JK |
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() { | |
e15243cc | 27 | if test "$(git log -1 --pretty=format:%s $1 --)" = "$(cat mark)"; then |
27845e95 JK |
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) && | |
3275f4e8 JS |
38 | git remote add -m main one one && |
39 | git remote add -m main two two | |
27845e95 JK |
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 | ||
7be8b3ba DI |
50 | test_expect_success 'nonexistent group produces error' ' |
51 | mark nonexistent && | |
27845e95 | 52 | update_repos && |
7be8b3ba | 53 | test_must_fail git remote update nonexistent && |
27845e95 JK |
54 | ! repo_fetched one && |
55 | ! repo_fetched two | |
56 | ' | |
57 | ||
9c4a036b | 58 | test_expect_success 'updating group updates all members (remote update)' ' |
27845e95 JK |
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 | ||
9c4a036b BG |
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)' ' | |
27845e95 JK |
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 | ||
9c4a036b BG |
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 | ||
27845e95 JK |
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 | ||
06a668cb CW |
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 | ||
27845e95 | 111 | test_done |