tests/test-convert-cvsnt-mergepoints
author Greg Ward <greg-hg@gerg.ca>
Mon, 15 Jun 2009 20:35:19 -0400
changeset 8819 e93ab347c814
parent 8818 727f7aaefaab
child 8820 e8cb1fa0d4a9
permissions -rwxr-xr-x
test-convert-cvsnt-mergepoints: ignore differences between CVS 1.11 and 1.12. - factor out cvsci function (similar to other test-convert-cvs* scripts) - add filterpath function (also similar to other scripts) - generally munge the output of CVS - add lots of output to make it easier to follow when things go wrong This doesn't make the test pass reliably under CVS 1.11; it just makes it behave the same as under CVS 1.12, i.e. sometimes it passes and sometimes it fails. Failure is more frequent with faster hardware.

#!/bin/sh

"$TESTDIR/hghave" cvs || exit 80

filterpath()
{
    eval "$@" | sed "s:$CVSROOT:*REPO*:g"
}

cvscall()
{
    echo cvs -f "$@"
    cvs -f "$@"
}

# output of 'cvs ci' varies unpredictably, so discard most of it
# -- just keep the part that matters
cvsci()
{
    echo cvs -f ci "$@"
    cvs -f ci "$@" 2>&1 | egrep "^(new|initial) revision:"
}

hgcat()
{
    hg --cwd src-hg cat -r tip "$1"
}

echo "[extensions]" >> $HGRCPATH
echo "convert = " >> $HGRCPATH
echo "graphlog = " >> $HGRCPATH
echo "[convert]" >> $HGRCPATH
echo "cvsps=builtin" >> $HGRCPATH

echo "% create cvs repository"
mkdir cvsmaster
cd cvsmaster
CVSROOT=`pwd`
export CVSROOT
CVS_OPTIONS=-f
export CVS_OPTIONS
cd ..
filterpath cvscall -Q -d "$CVSROOT" init

echo "% checkout #1: add foo.txt"
cvscall -Q checkout -d cvsworktmp .
cd cvsworktmp
mkdir foo
cvscall -Q add foo
cd foo
echo foo > foo.txt
cvscall -Q add foo.txt 
cvsci -m "foo.txt"
 
cd ../..
rm -rf cvsworktmp

echo "% checkout #2: create MYBRANCH1 and modify foo.txt on it"
cvscall -Q checkout -d cvswork foo

cd cvswork

cvscall -q rtag -b -R MYBRANCH1 foo
cvscall -Q update -P -r MYBRANCH1
echo bar > foo.txt
cvsci -m "bar"
echo baz > foo.txt
cvsci -m "baz"

echo "% create MYBRANCH1_2 and modify foo.txt some more"
cvscall -q rtag -b -R -r MYBRANCH1 MYBRANCH1_2 foo
cvscall -Q update -P -r MYBRANCH1_2

echo bazzie > foo.txt
cvsci -m "bazzie"

echo "% create MYBRANCH1_1 and modify foo.txt yet again"
cvscall -q rtag -b -R MYBRANCH1_1 foo
cvscall -Q update -P -r MYBRANCH1_1

echo quux > foo.txt
cvsci -m "quux"

echo "% merge MYBRANCH1 to MYBRANCH1_1"
filterpath cvscall -Q update -P -jMYBRANCH1
echo xyzzy > foo.txt
cvsci -m "merge1"

echo "% return to trunk and merge MYBRANCH1_2"
cvscall -Q update -P -A
filterpath cvscall -Q update -P -jMYBRANCH1_2
cvsci -m "merge2"

REALCVS=`which cvs`
echo "for x in \$*; do if [ \"\$x\" = \"rlog\" ]; then echo \"RCS file: $CVSROOT/foo/foo.txt,v\"; cat $TESTDIR/test-convert-cvsnt-mergepoints.rlog; exit 0; fi; done; $REALCVS \$*" > cvs
chmod +x cvs
PATH=.:${PATH} hg debugcvsps --parents foo | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/'

cd ..