add tests for remote groups
authorJeff King <peff@peff.net>
Mon, 6 Apr 2009 20:18:23 +0000 (16:18 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 9 Apr 2009 08:30:06 +0000 (01:30 -0700)
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>
t/t5506-remote-groups.sh [new file with mode: 0755]
diff --git a/t/t5506-remote-groups.sh b/t/t5506-remote-groups.sh
new file mode 100755 (executable)
index 0000000..2a1806b
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+test_description='git remote group handling'
+. ./test-lib.sh
+
+mark() {
+       echo "$1" >mark
+}
+
+update_repo() {
+       (cd $1 &&
+       echo content >>file &&
+       git add file &&
+       git commit -F ../mark)
+}
+
+update_repos() {
+       update_repo one $1 &&
+       update_repo two $1
+}
+
+repo_fetched() {
+       if test "`git log -1 --pretty=format:%s $1 --`" = "`cat mark`"; then
+               echo >&2 "repo was fetched: $1"
+               return 0
+       fi
+       echo >&2 "repo was not fetched: $1"
+       return 1
+}
+
+test_expect_success 'setup' '
+       mkdir one && (cd one && git init) &&
+       mkdir two && (cd two && git init) &&
+       git remote add -m master one one &&
+       git remote add -m master two two
+'
+
+test_expect_success 'no group updates all' '
+       mark update-all &&
+       update_repos &&
+       git remote update &&
+       repo_fetched one &&
+       repo_fetched two
+'
+
+test_expect_success 'nonexistant group produces error' '
+       mark nonexistant &&
+       update_repos &&
+       test_must_fail git remote update nonexistant &&
+       ! repo_fetched one &&
+       ! repo_fetched two
+'
+
+test_expect_success 'updating group updates all members' '
+       mark group-all &&
+       update_repos &&
+       git config --add remotes.all one &&
+       git config --add remotes.all two &&
+       git remote update all &&
+       repo_fetched one &&
+       repo_fetched two
+'
+
+test_expect_success 'updating group does not update non-members' '
+       mark group-some &&
+       update_repos &&
+       git config --add remotes.some one &&
+       git remote update some &&
+       repo_fetched one &&
+       ! repo_fetched two
+'
+
+test_expect_success 'updating remote name updates that remote' '
+       mark remote-name &&
+       update_repos &&
+       git remote update one &&
+       repo_fetched one &&
+       ! repo_fetched two
+'
+
+test_done