t / t5506-remote-groups.shon commit Merge branch 'sb/config-write-fix' (2a2c18f)
   1#!/bin/sh
   2
   3test_description='git remote group handling'
   4. ./test-lib.sh
   5
   6mark() {
   7        echo "$1" >mark
   8}
   9
  10update_repo() {
  11        (cd $1 &&
  12        echo content >>file &&
  13        git add file &&
  14        git commit -F ../mark)
  15}
  16
  17update_repos() {
  18        update_repo one $1 &&
  19        update_repo two $1
  20}
  21
  22repo_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
  31test_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
  38test_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
  46test_expect_success 'nonexistent group produces error' '
  47        mark nonexistent &&
  48        update_repos &&
  49        test_must_fail git remote update nonexistent &&
  50        ! repo_fetched one &&
  51        ! repo_fetched two
  52'
  53
  54test_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
  62'
  63
  64test_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
  70'
  71
  72test_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
  79'
  80
  81test_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
  88'
  89
  90test_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
  96'
  97
  98test_done