summaryrefslogtreecommitdiff
path: root/tests/test-convert-cvsnt-mergepoints.t
diff options
context:
space:
mode:
authorLorry <lorry@roadtrain.codethink.co.uk>2012-08-22 14:49:51 +0100
committerLorry <lorry@roadtrain.codethink.co.uk>2012-08-22 14:49:51 +0100
commita498da43c7fdb9f24b73680c02a4a3588cc62d9a (patch)
treedaf8119dae1749b5165b68033a1b23a7375ce9ce /tests/test-convert-cvsnt-mergepoints.t
downloadmercurial-tarball-a498da43c7fdb9f24b73680c02a4a3588cc62d9a.tar.gz
Tarball conversion
Diffstat (limited to 'tests/test-convert-cvsnt-mergepoints.t')
-rw-r--r--tests/test-convert-cvsnt-mergepoints.t207
1 files changed, 207 insertions, 0 deletions
diff --git a/tests/test-convert-cvsnt-mergepoints.t b/tests/test-convert-cvsnt-mergepoints.t
new file mode 100644
index 0000000..1e3d02b
--- /dev/null
+++ b/tests/test-convert-cvsnt-mergepoints.t
@@ -0,0 +1,207 @@
+
+ $ "$TESTDIR/hghave" cvs || exit 80
+ $ filterpath()
+ > {
+ > eval "$@" | sed "s:$CVSROOT:*REPO*:g"
+ > }
+ $ cvscall()
+ > {
+ > cvs -f "$@"
+ > }
+
+output of 'cvs ci' varies unpredictably, so discard most of it
+-- just keep the part that matters
+
+ $ cvsci()
+ > {
+ > cvs -f ci -f "$@" > /dev/null
+ > }
+ $ hgcat()
+ > {
+ > hg --cwd src-hg cat -r tip "$1"
+ > }
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "convert = " >> $HGRCPATH
+ $ echo "graphlog = " >> $HGRCPATH
+
+create cvs repository
+
+ $ mkdir cvsmaster
+ $ cd cvsmaster
+ $ CVSROOT=`pwd`
+ $ export CVSROOT
+ $ CVS_OPTIONS=-f
+ $ export CVS_OPTIONS
+ $ cd ..
+ $ filterpath cvscall -Q -d "$CVSROOT" init
+
+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 "add foo.txt" foo.txt
+ $ cd ../..
+ $ rm -rf cvsworktmp
+
+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" foo.txt
+ $ echo baz > foo.txt
+ $ cvsci -m "baz" foo.txt
+
+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" foo.txt
+
+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" foo.txt
+
+merge MYBRANCH1 to MYBRANCH1_1
+
+ $ filterpath cvscall -Q update -P -jMYBRANCH1
+ rcsmerge: warning: conflicts during merge
+ 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
+
+carefully placed sleep to dodge cvs bug (optimization?) where it
+sometimes ignores a "commit" command if it comes too fast (the -f
+option in cvsci seems to work for all the other commits in this
+script)
+
+ $ sleep 1
+ $ echo xyzzy > foo.txt
+ $ cvsci -m "merge1+clobber" foo.txt
+
+#if unix-permissions
+
+return to trunk and merge MYBRANCH1_2
+
+ $ cvscall -Q update -P -A
+ $ filterpath cvscall -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
+ $ cvsci -m "merge2" foo.txt
+ $ 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
+ collecting CVS rlog
+ 7 log entries
+ creating changesets
+ 7 changeset entries
+ ---------------------
+ PatchSet 1
+ Date: * (glob)
+ Author: user
+ Branch: HEAD
+ Tag: (none)
+ Branchpoints: MYBRANCH1_1, MYBRANCH1
+ Log:
+ foo.txt
+
+ Members:
+ foo.txt:INITIAL->1.1
+
+ ---------------------
+ PatchSet 2
+ Date: * (glob)
+ Author: user
+ Branch: MYBRANCH1
+ Tag: (none)
+ Parent: 1
+ Log:
+ bar
+
+ Members:
+ foo.txt:1.1->1.1.2.1
+
+ ---------------------
+ PatchSet 3
+ Date: * (glob)
+ Author: user
+ Branch: MYBRANCH1
+ Tag: (none)
+ Branchpoints: MYBRANCH1_2
+ Parent: 2
+ Log:
+ baz
+
+ Members:
+ foo.txt:1.1.2.1->1.1.2.2
+
+ ---------------------
+ PatchSet 4
+ Date: * (glob)
+ Author: user
+ Branch: MYBRANCH1_1
+ Tag: (none)
+ Parent: 1
+ Log:
+ quux
+
+ Members:
+ foo.txt:1.1->1.1.4.1
+
+ ---------------------
+ PatchSet 5
+ Date: * (glob)
+ Author: user
+ Branch: MYBRANCH1_2
+ Tag: (none)
+ Parent: 3
+ Log:
+ bazzie
+
+ Members:
+ foo.txt:1.1.2.2->1.1.2.2.2.1
+
+ ---------------------
+ PatchSet 6
+ Date: * (glob)
+ Author: user
+ Branch: HEAD
+ Tag: (none)
+ Parents: 1,5
+ Log:
+ merge
+
+ Members:
+ foo.txt:1.1->1.2
+
+ ---------------------
+ PatchSet 7
+ Date: * (glob)
+ Author: user
+ Branch: MYBRANCH1_1
+ Tag: (none)
+ Parents: 4,3
+ Log:
+ merge
+
+ Members:
+ foo.txt:1.1.4.1->1.1.4.2
+
+#endif
+
+ $ cd ..