# Shell library sourced instead of ./test-lib.sh by cvsimport tests. source ./test-lib.sh unset CVS_SERVER if ! type cvs >/dev/null 2>&1 { setvar skip_all = ''skipping cvsimport tests, cvs not found'' test_done } setvar CVS = ""cvs -f"" export CVS setvar cvsps_version = $(cvsps -h 2>&1 | sed -ne 's/cvsps version //p') case (cvsps_version) { 2.1 | 2.2* { } '' { setvar skip_all = ''skipping cvsimport tests, cvsps not found'' test_done } * { setvar skip_all = ''skipping cvsimport tests, unsupported cvsps version'' test_done } } proc setup_cvs_test_repository { setvar CVSROOT = ""$(pwd)/.cvsroot"" && cp -r "$TEST_DIRECTORY/$1/cvsroot" $CVSROOT && export CVSROOT } proc test_cvs_co { # Usage: test_cvs_co BRANCH_NAME rm -rf module-cvs-"$1" if test $1 = "master" { $CVS co -P -d module-cvs-"$1" -A module } else { $CVS co -P -d module-cvs-"$1" -r $1 module } } proc test_git_co { # Usage: test_git_co BRANCH_NAME shell {cd module-git && git checkout $1} } proc test_cmp_branch_file { # Usage: test_cmp_branch_file BRANCH_NAME PATH # The branch must already be checked out of CVS and git. test_cmp module-cvs-"$1"/"$2" module-git/"$2" } proc test_cmp_branch_tree { # Usage: test_cmp_branch_tree BRANCH_NAME # Check BRANCH_NAME out of CVS and git and make sure that all # of the files and directories are identical. test_cvs_co $1 && test_git_co $1 && shell { cd module-cvs-"$1" find . -type d -name CVS -prune -o -type f -print } | sort >module-cvs-"$1".list && shell { cd module-git find . -type d -name .git -prune -o -type f -print } | sort >module-git-"$1".list && test_cmp module-cvs-"$1".list module-git-"$1".list && cat module-cvs-"$1".list | while read f { test_cmp_branch_file $1 $f || return 1 } }