t / t5511-refspec.shon commit t1500: avoid changing working directory outside of tests (1e043cf)
   1#!/bin/sh
   2
   3test_description='refspec parsing'
   4
   5. ./test-lib.sh
   6
   7test_refspec () {
   8        kind=$1 refspec=$2 expect=$3
   9        git config remote.frotz.url "." &&
  10        git config --remove-section remote.frotz &&
  11        git config remote.frotz.url "." &&
  12        git config "remote.frotz.$kind" "$refspec" &&
  13        if test "$expect" != invalid
  14        then
  15                title="$kind $refspec"
  16                test='git ls-remote frotz'
  17        else
  18                title="$kind $refspec (invalid)"
  19                test='test_must_fail git ls-remote frotz'
  20        fi
  21        test_expect_success "$title" "$test"
  22}
  23
  24test_refspec push ''                                            invalid
  25test_refspec push ':'
  26test_refspec push '::'                                          invalid
  27test_refspec push '+:'
  28
  29test_refspec fetch ''
  30test_refspec fetch ':'
  31test_refspec fetch '::'                                         invalid
  32
  33test_refspec push 'refs/heads/*:refs/remotes/frotz/*'
  34test_refspec push 'refs/heads/*:refs/remotes/frotz'             invalid
  35test_refspec push 'refs/heads:refs/remotes/frotz/*'             invalid
  36test_refspec push 'refs/heads/master:refs/remotes/frotz/xyzzy'
  37
  38
  39# These have invalid LHS, but we do not have a formal "valid sha-1
  40# expression syntax checker" so they are not checked with the current
  41# code.  They will be caught downstream anyway, but we may want to
  42# have tighter check later...
  43
  44: test_refspec push 'refs/heads/master::refs/remotes/frotz/xyzzy'       invalid
  45: test_refspec push 'refs/heads/maste :refs/remotes/frotz/xyzzy'        invalid
  46
  47test_refspec fetch 'refs/heads/*:refs/remotes/frotz/*'
  48test_refspec fetch 'refs/heads/*:refs/remotes/frotz'            invalid
  49test_refspec fetch 'refs/heads:refs/remotes/frotz/*'            invalid
  50test_refspec fetch 'refs/heads/master:refs/remotes/frotz/xyzzy'
  51test_refspec fetch 'refs/heads/master::refs/remotes/frotz/xyzzy'        invalid
  52test_refspec fetch 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid
  53
  54test_refspec push 'master~1:refs/remotes/frotz/backup'
  55test_refspec fetch 'master~1:refs/remotes/frotz/backup'         invalid
  56test_refspec push 'HEAD~4:refs/remotes/frotz/new'
  57test_refspec fetch 'HEAD~4:refs/remotes/frotz/new'              invalid
  58
  59test_refspec push 'HEAD'
  60test_refspec fetch 'HEAD'
  61test_refspec push 'refs/heads/ nitfol'                          invalid
  62test_refspec fetch 'refs/heads/ nitfol'                         invalid
  63
  64test_refspec push 'HEAD:'                                       invalid
  65test_refspec fetch 'HEAD:'
  66test_refspec push 'refs/heads/ nitfol:'                         invalid
  67test_refspec fetch 'refs/heads/ nitfol:'                        invalid
  68
  69test_refspec push ':refs/remotes/frotz/deleteme'
  70test_refspec fetch ':refs/remotes/frotz/HEAD-to-me'
  71test_refspec push ':refs/remotes/frotz/delete me'               invalid
  72test_refspec fetch ':refs/remotes/frotz/HEAD to me'             invalid
  73
  74test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*-blah'
  75test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*-blah'
  76
  77test_refspec fetch 'refs/heads*/for-linus:refs/remotes/mine/*'
  78test_refspec push 'refs/heads*/for-linus:refs/remotes/mine/*'
  79
  80test_refspec fetch 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid
  81test_refspec push 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid
  82
  83test_refspec fetch 'refs/heads/*g*/for-linus:refs/remotes/mine/*' invalid
  84test_refspec push 'refs/heads/*g*/for-linus:refs/remotes/mine/*' invalid
  85
  86test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*'
  87test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*'
  88
  89good=$(printf '\303\204')
  90test_refspec fetch "refs/heads/${good}"
  91bad=$(printf '\011tab')
  92test_refspec fetch "refs/heads/${bad}"                          invalid
  93
  94test_done