add tests for remote groups
This tries to systematically cover existing behavior, and also mark some expect_failure cases for desired behavior. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Apr 6, 2009 at 16:18 UTC
27845e9548b7b5b316d89f64546466f2004ee414
1 file changed
+81
t/t5506-remote-groups.sh
new
+81
@@ -0,0 +1,81 @@
1
+#!/bin/sh
2
+
3
+test_description='git remote group handling'
4
+. ./test-lib.sh
5
+
6
+mark() {
7
+ echo "$1" >mark
8
+}
9
+
10
+update_repo() {
11
+ (cd $1 &&
12
+ echo content >>file &&
13
+ git add file &&
14
+ git commit -F ../mark)
15
+}
16
+
17
+update_repos() {
18
+ update_repo one $1 &&
19
+ update_repo two $1
20
+}
21
+
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
26
+ fi
27
+ echo >&2 "repo was not fetched: $1"
28
+ return 1
29
+}
30
+
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
36
+'
37
+
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
44
+'
45
+
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
52
+'
53
+
54
+test_expect_success 'updating group updates all members' '
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
62
+'
63
+
64
+test_expect_success 'updating group does not update non-members' '
65
+ mark group-some &&
66
+ update_repos &&
67
+ git config --add remotes.some one &&
68
+ git remote update some &&
69
+ repo_fetched one &&
70
+ ! repo_fetched two
71
+'
72
+
73
+test_expect_success 'updating remote name updates that remote' '
74
+ mark remote-name &&
75
+ update_repos &&
76
+ git remote update one &&
77
+ repo_fetched one &&
78
+ ! repo_fetched two
79
+'
80
+
81
+test_done