t / t9117-git-svn-init-clone.shon commit t3903: abstract away SHA-1-specific constants (c784815)
   1#!/bin/sh
   2#
   3# Copyright (c) 2007 Eric Wong
   4#
   5
   6test_description='git svn init/clone tests'
   7
   8. ./lib-git-svn.sh
   9
  10# setup, run inside tmp so we don't have any conflicts with $svnrepo
  11set -e
  12rm -r .git
  13mkdir tmp
  14cd tmp
  15
  16test_expect_success 'setup svnrepo' '
  17        mkdir project project/trunk project/branches project/tags &&
  18        echo foo > project/trunk/foo &&
  19        svn_cmd import -m "$test_description" project "$svnrepo"/project &&
  20        rm -rf project
  21        '
  22
  23test_expect_success 'basic clone' '
  24        test ! -d trunk &&
  25        git svn clone "$svnrepo"/project/trunk &&
  26        test -d trunk/.git/svn &&
  27        test -e trunk/foo &&
  28        rm -rf trunk
  29        '
  30
  31test_expect_success 'clone to target directory' '
  32        test ! -d target &&
  33        git svn clone "$svnrepo"/project/trunk target &&
  34        test -d target/.git/svn &&
  35        test -e target/foo &&
  36        rm -rf target
  37        '
  38
  39test_expect_success 'clone with --stdlayout' '
  40        test ! -d project &&
  41        git svn clone -s "$svnrepo"/project &&
  42        test -d project/.git/svn &&
  43        test -e project/foo &&
  44        rm -rf project
  45        '
  46
  47test_expect_success 'clone to target directory with --stdlayout' '
  48        test ! -d target &&
  49        git svn clone -s "$svnrepo"/project target &&
  50        test -d target/.git/svn &&
  51        test -e target/foo &&
  52        rm -rf target
  53        '
  54
  55test_expect_success 'init without -s/-T/-b/-t does not warn' '
  56        test ! -d trunk &&
  57        git svn init "$svnrepo"/project/trunk trunk 2>warning &&
  58        ! grep -q prefix warning &&
  59        rm -rf trunk &&
  60        rm -f warning
  61        '
  62
  63test_expect_success 'clone without -s/-T/-b/-t does not warn' '
  64        test ! -d trunk &&
  65        git svn clone "$svnrepo"/project/trunk 2>warning &&
  66        ! grep -q prefix warning &&
  67        rm -rf trunk &&
  68        rm -f warning
  69        '
  70
  71test_svn_configured_prefix () {
  72        prefix=$1 &&
  73        cat >expect <<EOF &&
  74project/trunk:refs/remotes/${prefix}trunk
  75project/branches/*:refs/remotes/${prefix}*
  76project/tags/*:refs/remotes/${prefix}tags/*
  77EOF
  78        test ! -f actual &&
  79        git --git-dir=project/.git config svn-remote.svn.fetch >>actual &&
  80        git --git-dir=project/.git config svn-remote.svn.branches >>actual &&
  81        git --git-dir=project/.git config svn-remote.svn.tags >>actual &&
  82        test_cmp expect actual &&
  83        rm -f expect actual
  84}
  85
  86test_expect_success 'init with -s/-T/-b/-t assumes --prefix=origin/' '
  87        test ! -d project &&
  88        git svn init -s "$svnrepo"/project project 2>warning &&
  89        ! grep -q prefix warning &&
  90        test_svn_configured_prefix "origin/" &&
  91        rm -rf project &&
  92        rm -f warning
  93        '
  94
  95test_expect_success 'clone with -s/-T/-b/-t assumes --prefix=origin/' '
  96        test ! -d project &&
  97        git svn clone -s "$svnrepo"/project 2>warning &&
  98        ! grep -q prefix warning &&
  99        test_svn_configured_prefix "origin/" &&
 100        rm -rf project &&
 101        rm -f warning
 102        '
 103
 104test_expect_success 'init with -s/-T/-b/-t and --prefix "" still works' '
 105        test ! -d project &&
 106        git svn init -s "$svnrepo"/project project --prefix "" 2>warning &&
 107        ! grep -q prefix warning &&
 108        test_svn_configured_prefix "" &&
 109        rm -rf project &&
 110        rm -f warning
 111        '
 112
 113test_expect_success 'clone with -s/-T/-b/-t and --prefix "" still works' '
 114        test ! -d project &&
 115        git svn clone -s "$svnrepo"/project --prefix "" 2>warning &&
 116        ! grep -q prefix warning &&
 117        test_svn_configured_prefix "" &&
 118        rm -rf project &&
 119        rm -f warning
 120        '
 121
 122test_expect_success 'init with -T as a full url works' '
 123        test ! -d project &&
 124        git svn init -T "$svnrepo"/project/trunk project &&
 125        rm -rf project
 126        '
 127
 128test_done