tests/test-convert-svn-move
author Nicolas Dumazet <nicdumz.commits@gmail.com>
Mon, 30 Aug 2010 14:01:57 +0900
changeset 12115 a0dcbcbd1590
parent 11135 73a4ed3bfef8
permissions -rwxr-xr-x
tests: unify test-relink

#!/bin/sh

"$TESTDIR/hghave" svn svn-bindings || exit 80

fix_path()
{
    tr '\\' /
}

echo "[extensions]" >> $HGRCPATH
echo "convert = " >> $HGRCPATH
echo "hgext.graphlog =" >> $HGRCPATH

svnadmin create svn-repo
cat "$TESTDIR/svn/move.svndump" | svnadmin load svn-repo > /dev/null

svnpath=`pwd | fix_path`
# SVN wants all paths to start with a slash. Unfortunately,
# Windows ones don't. Handle that.
expr "$svnpath" : "\/" > /dev/null
if [ $? -ne 0 ]; then
    svnpath="/$svnpath"
fi
svnurl="file://$svnpath/svn-repo"

echo % convert trunk and branches
hg convert --datesort "$svnurl"/subproject A-hg

cd A-hg
hg glog --template '{rev} {desc|firstline} files: {files}\n'
echo '% check move copy records'
hg st --rev 12:13 --copies
echo '% check branches'
hg branches | sed 's/:.*/:/'
cd ..

mkdir test-replace
cd test-replace
svnadmin create svn-repo
cat "$TESTDIR/svn/replace.svndump" | svnadmin load svn-repo > /dev/null

echo '% convert files being replaced by directories'
hg convert svn-repo hg-repo
cd hg-repo
echo '% manifest before'
hg -v manifest -r 1
echo '% manifest after clobber1'
hg -v manifest -r 2
echo '% manifest after clobber2'
hg -v manifest -r 3
echo '% try updating'
hg up -qC default
cd ..

echo '% test convert progress bar'

echo "progress=" >> $HGRCPATH
echo "[progress]" >> $HGRCPATH
echo "assume-tty=1" >> $HGRCPATH
echo "delay=0" >> $HGRCPATH
echo "refresh=0" >> $HGRCPATH

cat > filtercr.py <<EOF
import sys, re
for line in sys.stdin:
    line = re.sub(r'\r+[^\n]', lambda m: '\n' + m.group()[-1:], line)
    sys.stdout.write(line)
EOF

hg convert svn-repo hg-progress 2>&1 | python filtercr.py