t / t9600-cvsimport.shon commit Emit a whole line in one go (2efcc97)
   1#!/bin/sh
   2
   3test_description='git cvsimport basic tests'
   4. ./lib-cvs.sh
   5
   6if ! test_have_prereq PERL; then
   7        say 'skipping git cvsimport tests, perl not available'
   8        test_done
   9fi
  10
  11CVSROOT=$(pwd)/cvsroot
  12export CVSROOT
  13
  14test_expect_success 'setup cvsroot' '$CVS init'
  15
  16test_expect_success 'setup a cvs module' '
  17
  18        mkdir "$CVSROOT/module" &&
  19        $CVS co -d module-cvs module &&
  20        cd module-cvs &&
  21        cat <<EOF >o_fortuna &&
  22O Fortuna
  23velut luna
  24statu variabilis,
  25
  26semper crescis
  27aut decrescis;
  28vita detestabilis
  29
  30nunc obdurat
  31et tunc curat
  32ludo mentis aciem,
  33
  34egestatem,
  35potestatem
  36dissolvit ut glaciem.
  37EOF
  38        $CVS add o_fortuna &&
  39        cat <<EOF >message &&
  40add "O Fortuna" lyrics
  41
  42These public domain lyrics make an excellent sample text.
  43EOF
  44        $CVS commit -F message &&
  45        cd ..
  46'
  47
  48test_expect_success 'import a trivial module' '
  49
  50        git cvsimport -a -R -z 0 -C module-git module &&
  51        test_cmp module-cvs/o_fortuna module-git/o_fortuna
  52
  53'
  54
  55test_expect_success 'pack refs' 'cd module-git && git gc && cd ..'
  56
  57test_expect_success 'initial import has correct .git/cvs-revisions' '
  58
  59        (cd module-git &&
  60         git log --format="o_fortuna 1.1 %H" -1) > expected &&
  61        test_cmp expected module-git/.git/cvs-revisions
  62'
  63
  64test_expect_success 'update cvs module' '
  65
  66        cd module-cvs &&
  67        cat <<EOF >o_fortuna &&
  68O Fortune,
  69like the moon
  70you are changeable,
  71
  72ever waxing
  73and waning;
  74hateful life
  75
  76first oppresses
  77and then soothes
  78as fancy takes it;
  79
  80poverty
  81and power
  82it melts them like ice.
  83EOF
  84        cat <<EOF >message &&
  85translate to English
  86
  87My Latin is terrible.
  88EOF
  89        $CVS commit -F message &&
  90        cd ..
  91'
  92
  93test_expect_success 'update git module' '
  94
  95        cd module-git &&
  96        git cvsimport -a -R -z 0 module &&
  97        git merge origin &&
  98        cd .. &&
  99        test_cmp module-cvs/o_fortuna module-git/o_fortuna
 100
 101'
 102
 103test_expect_success 'update has correct .git/cvs-revisions' '
 104
 105        (cd module-git &&
 106         git log --format="o_fortuna 1.1 %H" -1 HEAD^ &&
 107         git log --format="o_fortuna 1.2 %H" -1 HEAD) > expected &&
 108        test_cmp expected module-git/.git/cvs-revisions
 109'
 110
 111test_expect_success 'update cvs module' '
 112
 113        cd module-cvs &&
 114                echo 1 >tick &&
 115                $CVS add tick &&
 116                $CVS commit -m 1
 117        cd ..
 118
 119'
 120
 121test_expect_success 'cvsimport.module config works' '
 122
 123        cd module-git &&
 124                git config cvsimport.module module &&
 125                git cvsimport -a -R -z0 &&
 126                git merge origin &&
 127        cd .. &&
 128        test_cmp module-cvs/tick module-git/tick
 129
 130'
 131
 132test_expect_success 'second update has correct .git/cvs-revisions' '
 133
 134        (cd module-git &&
 135         git log --format="o_fortuna 1.1 %H" -1 HEAD^^ &&
 136         git log --format="o_fortuna 1.2 %H" -1 HEAD^
 137         git log --format="tick 1.1 %H" -1 HEAD) > expected &&
 138        test_cmp expected module-git/.git/cvs-revisions
 139'
 140
 141test_expect_success 'import from a CVS working tree' '
 142
 143        $CVS co -d import-from-wt module &&
 144        cd import-from-wt &&
 145                git cvsimport -a -z0 &&
 146                echo 1 >expect &&
 147                git log -1 --pretty=format:%s%n >actual &&
 148                test_cmp actual expect &&
 149        cd ..
 150
 151'
 152
 153test_expect_success 'no .git/cvs-revisions created by default' '
 154
 155        ! test -e import-from-wt/.git/cvs-revisions
 156
 157'
 158
 159test_expect_success 'test entire HEAD' 'test_cmp_branch_tree master'
 160
 161test_done