t / t5801-remote-helpers.shon commit fast-export: don't handle uninteresting refs (49266e8)
   1#!/bin/sh
   2#
   3# Copyright (c) 2010 Sverre Rabbelier
   4#
   5
   6test_description='Test remote-helper import and export commands'
   7
   8. ./test-lib.sh
   9
  10if ! type "${BASH-bash}" >/dev/null 2>&1; then
  11        skip_all='skipping remote-testgit tests, bash not available'
  12        test_done
  13fi
  14
  15compare_refs() {
  16        git --git-dir="$1/.git" rev-parse --verify $2 >expect &&
  17        git --git-dir="$3/.git" rev-parse --verify $4 >actual &&
  18        test_cmp expect actual
  19}
  20
  21test_expect_success 'setup repository' '
  22        git init server &&
  23        (cd server &&
  24         echo content >file &&
  25         git add file &&
  26         git commit -m one)
  27'
  28
  29test_expect_success 'cloning from local repo' '
  30        git clone "testgit::${PWD}/server" local &&
  31        test_cmp server/file local/file
  32'
  33
  34test_expect_success 'create new commit on remote' '
  35        (cd server &&
  36         echo content >>file &&
  37         git commit -a -m two)
  38'
  39
  40test_expect_success 'pulling from local repo' '
  41        (cd local && git pull) &&
  42        test_cmp server/file local/file
  43'
  44
  45test_expect_success 'pushing to local repo' '
  46        (cd local &&
  47        echo content >>file &&
  48        git commit -a -m three &&
  49        git push) &&
  50        compare_refs local HEAD server HEAD
  51'
  52
  53test_expect_success 'fetch new branch' '
  54        (cd server &&
  55         git reset --hard &&
  56         git checkout -b new &&
  57         echo content >>file &&
  58         git commit -a -m five
  59        ) &&
  60        (cd local &&
  61         git fetch origin new
  62        ) &&
  63        compare_refs server HEAD local FETCH_HEAD
  64'
  65
  66#
  67# This is only needed because of a bug not detected by this script. It will be
  68# fixed shortly, but for now lets not cause regressions.
  69#
  70test_expect_success 'bump commit in server' '
  71        (cd server &&
  72        git checkout master &&
  73        echo content >>file &&
  74        git commit -a -m four) &&
  75        compare_refs server HEAD server HEAD
  76'
  77
  78test_expect_success 'fetch multiple branches' '
  79        (cd local &&
  80         git fetch
  81        ) &&
  82        compare_refs server master local refs/remotes/origin/master &&
  83        compare_refs server new local refs/remotes/origin/new
  84'
  85
  86test_expect_success 'push when remote has extra refs' '
  87        (cd local &&
  88         git reset --hard origin/master &&
  89         echo content >>file &&
  90         git commit -a -m six &&
  91         git push
  92        ) &&
  93        compare_refs local master server master
  94'
  95
  96test_expect_success 'push new branch by name' '
  97        (cd local &&
  98         git checkout -b new-name  &&
  99         echo content >>file &&
 100         git commit -a -m seven &&
 101         git push origin new-name
 102        ) &&
 103        compare_refs local HEAD server refs/heads/new-name
 104'
 105
 106test_expect_failure 'push new branch with old:new refspec' '
 107        (cd local &&
 108         git push origin new-name:new-refspec
 109        ) &&
 110        compare_refs local HEAD server refs/heads/new-refspec
 111'
 112
 113test_expect_success 'cloning without refspec' '
 114        GIT_REMOTE_TESTGIT_REFSPEC="" \
 115        git clone "testgit::${PWD}/server" local2 &&
 116        compare_refs local2 HEAD server HEAD
 117'
 118
 119test_expect_success 'pulling without refspecs' '
 120        (cd local2 &&
 121        git reset --hard &&
 122        GIT_REMOTE_TESTGIT_REFSPEC="" git pull) &&
 123        compare_refs local2 HEAD server HEAD
 124'
 125
 126test_expect_failure 'pushing without refspecs' '
 127        test_when_finished "(cd local2 && git reset --hard origin)" &&
 128        (cd local2 &&
 129        echo content >>file &&
 130        git commit -a -m ten &&
 131        GIT_REMOTE_TESTGIT_REFSPEC="" git push) &&
 132        compare_refs local2 HEAD server HEAD
 133'
 134
 135test_expect_success 'pulling with straight refspec' '
 136        (cd local2 &&
 137        GIT_REMOTE_TESTGIT_REFSPEC="*:*" git pull) &&
 138        compare_refs local2 HEAD server HEAD
 139'
 140
 141test_expect_failure 'pushing with straight refspec' '
 142        test_when_finished "(cd local2 && git reset --hard origin)" &&
 143        (cd local2 &&
 144        echo content >>file &&
 145        git commit -a -m eleven &&
 146        GIT_REMOTE_TESTGIT_REFSPEC="*:*" git push) &&
 147        compare_refs local2 HEAD server HEAD
 148'
 149
 150test_expect_success 'pulling without marks' '
 151        (cd local2 &&
 152        GIT_REMOTE_TESTGIT_NO_MARKS=1 git pull) &&
 153        compare_refs local2 HEAD server HEAD
 154'
 155
 156test_expect_failure 'pushing without marks' '
 157        test_when_finished "(cd local2 && git reset --hard origin)" &&
 158        (cd local2 &&
 159        echo content >>file &&
 160        git commit -a -m twelve &&
 161        GIT_REMOTE_TESTGIT_NO_MARKS=1 git push) &&
 162        compare_refs local2 HEAD server HEAD
 163'
 164
 165test_expect_success 'push all with existing object' '
 166        (cd local &&
 167        git branch dup2 master &&
 168        git push origin --all
 169        ) &&
 170        compare_refs local dup2 server dup2
 171'
 172
 173test_done