25244bf8e8fb760a1b51dcbc862d7789079e282b
   1#!/bin/sh
   2
   3test_description='fetch --all works correctly'
   4
   5. ./test-lib.sh
   6
   7setup_repository () {
   8        mkdir "$1" && (
   9        cd "$1" &&
  10        git init &&
  11        >file &&
  12        git add file &&
  13        test_tick &&
  14        git commit -m "Initial" &&
  15        git checkout -b side &&
  16        >elif &&
  17        git add elif &&
  18        test_tick &&
  19        git commit -m "Second" &&
  20        git checkout master
  21        )
  22}
  23
  24test_expect_success setup '
  25        setup_repository one &&
  26        setup_repository two &&
  27        (
  28                cd two && git branch another
  29        ) &&
  30        git clone --mirror two three
  31        git clone one test
  32'
  33
  34cat > test/expect << EOF
  35  one/master
  36  one/side
  37  origin/HEAD -> origin/master
  38  origin/master
  39  origin/side
  40  three/another
  41  three/master
  42  three/side
  43  two/another
  44  two/master
  45  two/side
  46EOF
  47
  48test_expect_success 'git fetch --all' '
  49        (cd test &&
  50         git remote add one ../one &&
  51         git remote add two ../two &&
  52         git remote add three ../three &&
  53         git fetch --all &&
  54         git branch -r > output &&
  55         test_cmp expect output)
  56'
  57
  58test_expect_success 'git fetch --all should continue if a remote has errors' '
  59        (git clone one test2 &&
  60         cd test2 &&
  61         git remote add bad ../non-existing &&
  62         git remote add one ../one &&
  63         git remote add two ../two &&
  64         git remote add three ../three &&
  65         test_must_fail git fetch --all &&
  66         git branch -r > output &&
  67         test_cmp ../test/expect output)
  68'
  69
  70test_expect_success 'git fetch --all does not allow non-option arguments' '
  71        (cd test &&
  72         test_must_fail git fetch --all origin &&
  73         test_must_fail git fetch --all origin master)
  74'
  75
  76test_done