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