blob: d0d2689b8c7d9d00214f74049b798b1f88fe3557 [file] [log] [blame]
#!/bin/bash
#
# A test harness for validation of svnmerge-migrate-history.py.
SUBVERSION_PREFIX='/usr/local/subversion'
export PATH="$SUBVERSION_PREFIX/bin:$PATH"
export PYTHONPATH="$SUBVERSION_PREFIX/lib/svn-python"
INITIAL_DIR="`pwd`"
TMP_DIR='/tmp'
REPOS_URL="file://$TMP_DIR/repos"
SCRIPT_DIR=$(python -c "import os; print os.path.abspath(\"`dirname $0`\")")
do_test()
{
expected_mergeinfo=$1
flags=$2
if [ "x${flags}x" = "xx" ]; then
echo "******* TEST BEGIN (no flags) ********"
else
echo "******* TEST BEGIN ${flags} ********"
fi
cd $TMP_DIR
rm -rf repos wc
echo 'Creating repository, and populating it with baseline data...'
svnadmin create repos
svn -q co $REPOS_URL wc
# r1
mkdir wc/trunk wc/branches wc/tags
echo 'hello world' > wc/trunk/hello-world.txt
svn -q add wc/*
svn -q ci -m 'Populate repos with skeletal data.' wc
# r2
echo 'Creating a branch, and initializing merge tracking data...'
svn cp -q wc/trunk wc/branches/B
svn ci -q -m 'Create branch B.' wc
# r3
(cd wc/branches/B \
&& $SCRIPT_DIR/svnmerge.py init > /dev/null \
&& svn ci -q -m 'Initialize svnmerge.py merge tracking info on branch B.')
# r4 - r7
echo 'Making some trunk commits...'
echo `date` >> wc/trunk/hello-world.txt \
&& svn -q ci -m 'Tweak hello-world.txt' wc
echo `date` >> wc/trunk/hello-world.txt \
&& svn -q ci -m 'Tweak hello-world.txt' wc
echo `date` >> wc/trunk/hello-world.txt \
&& svn -q ci -m 'Tweak hello-world.txt' wc
echo `date` >> wc/trunk/hello-world.txt \
&& svn -q ci -m 'Tweak hello-world.txt' wc
# r8
echo 'Using svnmerge to merge some trunk commits to branch B...'
svn up -q wc
(cd wc/branches/B \
&& $SCRIPT_DIR/svnmerge.py merge --revision 4-6 > /dev/null \
&& svn -q ci -m 'svnmerge merge some trunk revisions.')
# r9
echo 'Using svn merge --record-only to fake some merges branch B...'
(cd wc/branches/B \
&& svn merge --record-only -c7 $REPOS_URL/trunk \
&& svn -q ci -m 'svn merge --record-only a trunk revision.')
svn up -q wc
# Migrate the mergeinfo!
cd - > /dev/null
$SCRIPT_DIR/svnmerge-migrate-history.py $TMP_DIR/repos -v /branches ${flags}
if [ "$?" != "0" ]; then
echo '******* TEST FAIL: Mergeinfo migration failed *******' >&2
return 1
fi
# Now see if we got the right results.
svn pl -vR $REPOS_URL | grep ${expected_mergeinfo} > /dev/null
if [ "$?" != "0" ]; then
(echo '******* TEST FAIL: Unexpected mergeinfo:' \
&& svn pget -R svn:mergeinfo $REPOS_URL \
&& echo "Expected (regex): ${expected_mergeinfo} *******") >&2
return 1
else
echo '******* TEST PASS *******'
fi
}
do_test '/trunk:4-7' ''
do_test '/trunk:1,4-7' '--naive-mode'