# HG changeset patch # User Greg Ward # Date 2009-06-16 00:35:19 # Node ID e93ab347c814cf0b978183dc83f94bb7cb691426 # Parent 727f7aaefaabfe33192af424a77c6a5c9a769747 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. diff --git a/tests/test-convert-cvsnt-mergepoints b/tests/test-convert-cvsnt-mergepoints --- a/tests/test-convert-cvsnt-mergepoints +++ b/tests/test-convert-cvsnt-mergepoints @@ -2,11 +2,25 @@ "$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" @@ -18,7 +32,7 @@ echo "graphlog = " >> $HGRCPATH echo "[convert]" >> $HGRCPATH echo "cvsps=builtin" >> $HGRCPATH -echo % create cvs repository +echo "% create cvs repository" mkdir cvsmaster cd cvsmaster CVSROOT=`pwd` @@ -26,51 +40,56 @@ export CVSROOT CVS_OPTIONS=-f export CVS_OPTIONS cd .. +filterpath cvscall -Q -d "$CVSROOT" init -cvscall -q -d "$CVSROOT" init - -cvscall -q checkout -d cvsworktmp . +echo "% checkout #1: add foo.txt" +cvscall -Q checkout -d cvsworktmp . cd cvsworktmp mkdir foo -cvscall -q add foo | sed -e 's/Directory .* added to the repository//g' +cvscall -Q add foo cd foo echo foo > foo.txt -cvscall -q add foo.txt -cvscall -q ci -m "foo.txt" | sed 's/.*,v.*/checking in/g' +cvscall -Q add foo.txt +cvsci -m "foo.txt" cd ../.. rm -rf cvsworktmp -cvscall -q checkout -d cvswork foo +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 up -P -r MYBRANCH1 +cvscall -Q update -P -r MYBRANCH1 echo bar > foo.txt -cvscall -q ci -m "bar" | sed 's/.*,v.*/checking in/g' +cvsci -m "bar" echo baz > foo.txt -cvscall -q ci -m "baz" | sed 's/.*,v.*/checking in/g' +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 up -P -r MYBRANCH1_2 +cvscall -Q update -P -r MYBRANCH1_2 echo bazzie > foo.txt -cvscall -q ci -m "bazzie" | sed 's/.*,v.*/checking in/g' +cvsci -m "bazzie" +echo "% create MYBRANCH1_1 and modify foo.txt yet again" cvscall -q rtag -b -R MYBRANCH1_1 foo -cvscall -q up -P -r MYBRANCH1_1 +cvscall -Q update -P -r MYBRANCH1_1 echo quux > foo.txt -cvscall -q ci -m "quux" | sed 's/.*,v.*/checking in/g' -cvscall -q up -P -jMYBRANCH1 | sed 's/RCS file: .*,v/merging MYBRANCH1/g' -echo xyzzy > foo.txt -cvscall -q ci -m "merge" | sed 's/.*,v.*/checking in/g' +cvsci -m "quux" -cvscall -q up -P -A +echo "% merge MYBRANCH1 to MYBRANCH1_1" +filterpath cvscall -Q update -P -jMYBRANCH1 +echo xyzzy > foo.txt +cvsci -m "merge1" -cvscall -q up -P -jMYBRANCH1_2 | sed 's/RCS file: .*,v/merging MYBRANCH1_2/g' -cvscall -q ci -m "merge" | sed 's/.*,v.*/checking in/g' +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 diff --git a/tests/test-convert-cvsnt-mergepoints.out b/tests/test-convert-cvsnt-mergepoints.out --- a/tests/test-convert-cvsnt-mergepoints.out +++ b/tests/test-convert-cvsnt-mergepoints.out @@ -1,46 +1,46 @@ % create cvs repository -U cvsworktmp/CVSROOT/checkoutlist -U cvsworktmp/CVSROOT/commitinfo -U cvsworktmp/CVSROOT/config -U cvsworktmp/CVSROOT/cvswrappers -U cvsworktmp/CVSROOT/loginfo -U cvsworktmp/CVSROOT/modules -U cvsworktmp/CVSROOT/notify -U cvsworktmp/CVSROOT/postadmin -U cvsworktmp/CVSROOT/postproxy -U cvsworktmp/CVSROOT/posttag -U cvsworktmp/CVSROOT/postwatch -U cvsworktmp/CVSROOT/preproxy -U cvsworktmp/CVSROOT/rcsinfo -U cvsworktmp/CVSROOT/taginfo -U cvsworktmp/CVSROOT/verifymsg - -cvs add: use `cvs commit' to add this file permanently -checking in +cvs -f -Q -d *REPO* init +% checkout #1: add foo.txt +cvs -f -Q checkout -d cvsworktmp . +cvs -f -Q add foo +cvs -f -Q add foo.txt +cvs -f ci -m foo.txt initial revision: 1.1 -U cvswork/foo.txt -checking in +% checkout #2: create MYBRANCH1 and modify foo.txt on it +cvs -f -Q checkout -d cvswork foo +cvs -f -q rtag -b -R MYBRANCH1 foo +cvs -f -Q update -P -r MYBRANCH1 +cvs -f ci -m bar new revision: 1.1.2.1; previous revision: 1.1 -checking in +cvs -f ci -m baz new revision: 1.1.2.2; previous revision: 1.1.2.1 -checking in +% create MYBRANCH1_2 and modify foo.txt some more +cvs -f -q rtag -b -R -r MYBRANCH1 MYBRANCH1_2 foo +cvs -f -Q update -P -r MYBRANCH1_2 +cvs -f ci -m bazzie new revision: 1.1.2.2.2.1; previous revision: 1.1.2.2 -U foo.txt -checking in +% create MYBRANCH1_1 and modify foo.txt yet again +cvs -f -q rtag -b -R MYBRANCH1_1 foo +cvs -f -Q update -P -r MYBRANCH1_1 +cvs -f ci -m quux new revision: 1.1.4.1; previous revision: 1.1 +% merge MYBRANCH1 to MYBRANCH1_1 rcsmerge: warning: conflicts during merge -merging MYBRANCH1 +cvs -f -Q update -P -jMYBRANCH1 +RCS file: *REPO*/foo/foo.txt,v retrieving revision 1.1 retrieving revision 1.1.2.2 Merging differences between 1.1 and 1.1.2.2 into foo.txt -checking in +cvs -f ci -m merge1 new revision: 1.1.4.2; previous revision: 1.1.4.1 -U foo.txt -merging MYBRANCH1_2 +% return to trunk and merge MYBRANCH1_2 +cvs -f -Q update -P -A +cvs -f -Q update -P -jMYBRANCH1_2 +RCS file: *REPO*/foo/foo.txt,v retrieving revision 1.1 retrieving revision 1.1.2.2.2.1 Merging differences between 1.1 and 1.1.2.2.2.1 into foo.txt -checking in +cvs -f ci -m merge2 new revision: 1.2; previous revision: 1.1 collecting CVS rlog 7 log entries