tests: unify test-convert-cvs-detectmerge
authorMatt Mackall <mpm@selenic.com>
Sun, 26 Sep 2010 15:42:48 -0500
changeset 12521 539480ce1c89
parent 12520 873ca83d6cfd
child 12522 7813e6b44a0b
tests: unify test-convert-cvs-detectmerge
tests/test-convert-cvs-detectmerge
tests/test-convert-cvs-detectmerge.out
tests/test-convert-cvs-detectmerge.t
--- a/tests/test-convert-cvs-detectmerge	Sun Sep 26 15:33:09 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-#!/bin/sh
-
-# Test config convert.cvsps.mergefrom config setting.
-# (Should test similar mergeto feature, but I don't understand it yet.)
-# Requires builtin cvsps.
-
-"$TESTDIR/hghave" cvs || exit 80
-
-CVSROOT=`pwd`/cvsrepo
-export CVSROOT
-
-# XXX copied from test-convert-cvs-synthetic
-cvscall()
-{
-    echo cvs -f "$@"
-    cvs -f "$@"
-}
-
-# output of 'cvs ci' varies unpredictably, so just discard it
-# XXX copied from test-convert-cvs-synthetic
-cvsci()
-{
-    echo cvs -f ci "$@"
-    cvs -f ci "$@" >/dev/null 2>&1
-}
-
-# XXX copied from test-convert-cvs-synthetic
-filterpath()
-{
-    eval "$@" | sed "s:$CVSROOT:*REPO*:g"
-}
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-echo "graphlog = " >> $HGRCPATH
-echo "[convert]" >> $HGRCPATH
-echo "cvsps.cache=0" >> $HGRCPATH
-echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH
-
-echo % create cvs repository with one project
-mkdir cvsrepo
-
-filterpath cvscall -q -d "$CVSROOT" init
-mkdir cvsrepo/proj
-
-echo % populate cvs repository
-cvscall -Q co proj
-cd proj
-touch file1
-cvscall -Q add file1
-cvsci -m"add file1 on trunk"
-
-echo % create two release branches
-cvscall -q tag -b v1_0
-cvscall -q tag -b v1_1
-
-echo % modify file1 on branch v1_0
-filterpath cvscall -Q update -rv1_0
-echo "change" >> file1
-cvsci -m"add text"
-
-echo % make unrelated change on v1_1
-cvscall -Q update -rv1_1
-touch unrelated
-cvscall -Q add unrelated
-cvsci -m"unrelated change"
-
-echo % merge file1 to v1_1
-filterpath cvscall -Q update -jv1_0
-cvsci -m"add text [MERGE from v1_0]"
-
-echo % merge change to trunk
-cvscall -Q update -A
-filterpath cvscall -Q update -jv1_1
-cvsci -m"add text [MERGE from v1_1]"
-
-echo % non-merged change on trunk
-echo "foo" > file2
-cvscall -Q add file2
-cvsci -m"add file2 on trunk" file2
-
-# this will create rev 1.3
-echo % change on trunk to backport
-echo "backport me" >> file1
-cvsci -m"add other text" file1
-cvscall log file1 | sed -n '/^date: / d; /^revision /,$ p;'
-
-# XXX how many ways are there to spell "trunk" with CVS?
-echo % backport trunk change to v1_1
-cvscall -Q update -rv1_1
-filterpath cvscall -Q update -j1.2 -j1.3 file1
-cvsci -m"add other text [MERGE from HEAD]" file1
-
-set -e
-echo "% fix bug on v1_1, merge to trunk with error"
-cvscall -Q update -rv1_1
-echo "merge forward" >> file1
-cvscall -Q tag unmerged
-cvsci -m"fix file1"
-cvscall -Q update -A
-filterpath cvscall -Q update -junmerged -jv1_1
-# note the typo in the commit log message
-cvsci -m"fix file1 [MERGE from v1-1]"
-cvs -Q tag -d unmerged
-
-set -e
-echo % convert to hg
-cd ..
-filterpath hg convert proj proj.hg
-
-echo % complete log
-template="{rev}: '{branches}' {desc}\n"
-hg -R proj.hg log --template="$template"
-
-echo % graphical log
-hg -R proj.hg glog --template="$template"
--- a/tests/test-convert-cvs-detectmerge.out	Sun Sep 26 15:33:09 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-% create cvs repository with one project
-cvs -f -q -d *REPO* init
-% populate cvs repository
-cvs -f -Q co proj
-cvs -f -Q add file1
-cvs -f ci -madd file1 on trunk
-% create two release branches
-cvs -f -q tag -b v1_0
-T file1
-cvs -f -q tag -b v1_1
-T file1
-% modify file1 on branch v1_0
-cvs -f -Q update -rv1_0
-cvs -f ci -madd text
-% make unrelated change on v1_1
-cvs -f -Q update -rv1_1
-cvs -f -Q add unrelated
-cvs -f ci -munrelated change
-% merge file1 to v1_1
-cvs -f -Q update -jv1_0
-RCS file: *REPO*/proj/file1,v
-retrieving revision 1.1
-retrieving revision 1.1.2.1
-Merging differences between 1.1 and 1.1.2.1 into file1
-cvs -f ci -madd text [MERGE from v1_0]
-% merge change to trunk
-cvs -f -Q update -A
-cvs -f -Q update -jv1_1
-RCS file: *REPO*/proj/file1,v
-retrieving revision 1.1
-retrieving revision 1.1.4.1
-Merging differences between 1.1 and 1.1.4.1 into file1
-cvs -f ci -madd text [MERGE from v1_1]
-% non-merged change on trunk
-cvs -f -Q add file2
-cvs -f ci -madd file2 on trunk file2
-% change on trunk to backport
-cvs -f ci -madd other text file1
-revision 1.3
-add other text
-----------------------------
-revision 1.2
-add text [MERGE from v1_1]
-----------------------------
-revision 1.1
-branches:  1.1.2;  1.1.4;
-add file1 on trunk
-----------------------------
-revision 1.1.4.1
-add text [MERGE from v1_0]
-----------------------------
-revision 1.1.2.1
-add text
-=============================================================================
-% backport trunk change to v1_1
-cvs -f -Q update -rv1_1
-cvs -f -Q update -j1.2 -j1.3 file1
-RCS file: *REPO*/proj/file1,v
-retrieving revision 1.2
-retrieving revision 1.3
-Merging differences between 1.2 and 1.3 into file1
-cvs -f ci -madd other text [MERGE from HEAD] file1
-% fix bug on v1_1, merge to trunk with error
-cvs -f -Q update -rv1_1
-cvs -f -Q tag unmerged
-cvs -f ci -mfix file1
-cvs -f -Q update -A
-cvs -f -Q update -junmerged -jv1_1
-RCS file: *REPO*/proj/file1,v
-retrieving revision 1.1.4.2
-retrieving revision 1.1.4.3
-Merging differences between 1.1.4.2 and 1.1.4.3 into file1
-cvs -f ci -mfix file1 [MERGE from v1-1]
-% convert to hg
-warning: CVS commit message references non-existent branch 'v1-1':
-fix file1 [MERGE from v1-1]
-initializing destination proj.hg repository
-connecting to *REPO*
-scanning source...
-collecting CVS rlog
-12 log entries
-creating changesets
-10 changeset entries
-sorting...
-converting...
-9 add file1 on trunk
-8 add text
-7 unrelated change
-6 add text [MERGE from v1_0]
-5 add text [MERGE from v1_1]
-4 add file2 on trunk
-3 add other text
-2 add other text [MERGE from HEAD]
-1 fix file1
-0 fix file1 [MERGE from v1-1]
-% complete log
-9: '' fix file1 [MERGE from v1-1]
-8: 'v1_1' fix file1
-7: 'v1_1' add other text [MERGE from HEAD]
-6: '' add other text
-5: '' add file2 on trunk
-4: '' add text [MERGE from v1_1]
-3: 'v1_1' add text [MERGE from v1_0]
-2: 'v1_1' unrelated change
-1: 'v1_0' add text
-0: '' add file1 on trunk
-% graphical log
-o  9: '' fix file1 [MERGE from v1-1]
-|
-| o  8: 'v1_1' fix file1
-| |
-| o  7: 'v1_1' add other text [MERGE from HEAD]
-|/|
-o |  6: '' add other text
-| |
-o |  5: '' add file2 on trunk
-| |
-o |  4: '' add text [MERGE from v1_1]
-|\|
-| o    3: 'v1_1' add text [MERGE from v1_0]
-| |\
-+---o  2: 'v1_1' unrelated change
-| |
-| o  1: 'v1_0' add text
-|/
-o  0: '' add file1 on trunk
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-cvs-detectmerge.t	Sun Sep 26 15:42:48 2010 -0500
@@ -0,0 +1,231 @@
+Test config convert.cvsps.mergefrom config setting.
+(Should test similar mergeto feature, but I don't understand it yet.)
+Requires builtin cvsps.
+
+  $ "$TESTDIR/hghave" cvs || exit 80
+  $ CVSROOT=`pwd`/cvsrepo
+  $ export CVSROOT
+
+  $ cvscall()
+  > {
+  >     cvs -f "$@"
+  > }
+
+output of 'cvs ci' varies unpredictably, so just discard it
+XXX copied from test-convert-cvs-synthetic
+
+  $ cvsci()
+  > {
+  >     cvs -f ci "$@" > /dev/null
+  > }
+
+XXX copied from test-convert-cvs-synthetic
+
+  $ echo "[extensions]" >> $HGRCPATH
+  $ echo "convert = " >> $HGRCPATH
+  $ echo "graphlog = " >> $HGRCPATH
+  $ echo "[convert]" >> $HGRCPATH
+  $ echo "cvsps.cache=0" >> $HGRCPATH
+  $ echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH
+
+create cvs repository with one project
+
+  $ mkdir cvsrepo
+  $ cvscall -q -d "$CVSROOT" init
+  $ mkdir cvsrepo/proj
+
+populate cvs repository
+
+  $ cvscall -Q co proj
+  $ cd proj
+  $ touch file1
+  $ cvscall -Q add file1
+  $ cvsci -m"add file1 on trunk"
+  cvs commit: Examining .
+
+create two release branches
+
+  $ cvscall -q tag -b v1_0
+  T file1
+  $ cvscall -q tag -b v1_1
+  T file1
+
+modify file1 on branch v1_0
+
+  $ cvscall -Q update -rv1_0
+  $ echo "change" >> file1
+  $ cvsci -m"add text"
+  cvs commit: Examining .
+
+make unrelated change on v1_1
+
+  $ cvscall -Q update -rv1_1
+  $ touch unrelated
+  $ cvscall -Q add unrelated
+  $ cvsci -m"unrelated change"
+  cvs commit: Examining .
+
+merge file1 to v1_1
+
+  $ cvscall -Q update -jv1_0
+  RCS file: */cvsrepo/proj/file1,v (glob)
+  retrieving revision 1.1
+  retrieving revision 1.1.2.1
+  Merging differences between 1.1 and 1.1.2.1 into file1
+  $ cvsci -m"add text [MERGE from v1_0]"
+  cvs commit: Examining .
+
+merge change to trunk
+
+  $ cvscall -Q update -A
+  $ cvscall -Q update -jv1_1
+  RCS file: */cvsrepo/proj/file1,v (glob)
+  retrieving revision 1.1
+  retrieving revision 1.1.4.1
+  Merging differences between 1.1 and 1.1.4.1 into file1
+  $ cvsci -m"add text [MERGE from v1_1]"
+  cvs commit: Examining .
+
+non-merged change on trunk
+
+  $ echo "foo" > file2
+  $ cvscall -Q add file2
+  $ cvsci -m"add file2 on trunk" file2
+
+this will create rev 1.3
+change on trunk to backport
+
+  $ echo "backport me" >> file1
+  $ cvsci -m"add other text" file1
+  $ cvscall log file1
+  
+  RCS file: */cvsrepo/proj/file1,v (glob)
+  Working file: file1
+  head: 1.3
+  branch:
+  locks: strict
+  access list:
+  symbolic names:
+  	v1_1: 1.1.0.4
+  	v1_0: 1.1.0.2
+  keyword substitution: kv
+  total revisions: 5;	selected revisions: 5
+  description:
+  ----------------------------
+  revision 1.3
+  date: * (glob)
+  add other text
+  ----------------------------
+  revision 1.2
+  date: * (glob)
+  add text [MERGE from v1_1]
+  ----------------------------
+  revision 1.1
+  date: * (glob)
+  branches:  1.1.2;  1.1.4;
+  add file1 on trunk
+  ----------------------------
+  revision 1.1.4.1
+  date: * (glob)
+  add text [MERGE from v1_0]
+  ----------------------------
+  revision 1.1.2.1
+  date: * (glob)
+  add text
+  =============================================================================
+
+XXX how many ways are there to spell "trunk" with CVS?
+backport trunk change to v1_1
+
+  $ cvscall -Q update -rv1_1
+  $ cvscall -Q update -j1.2 -j1.3 file1
+  RCS file: */cvsrepo/proj/file1,v (glob)
+  retrieving revision 1.2
+  retrieving revision 1.3
+  Merging differences between 1.2 and 1.3 into file1
+  $ cvsci -m"add other text [MERGE from HEAD]" file1
+
+fix bug on v1_1, merge to trunk with error
+
+  $ cvscall -Q update -rv1_1
+  $ echo "merge forward" >> file1
+  $ cvscall -Q tag unmerged
+  $ cvsci -m"fix file1"
+  cvs commit: Examining .
+  $ cvscall -Q update -A
+  $ cvscall -Q update -junmerged -jv1_1
+  RCS file: */cvsrepo/proj/file1,v (glob)
+  retrieving revision 1.1.4.2
+  retrieving revision 1.1.4.3
+  Merging differences between 1.1.4.2 and 1.1.4.3 into file1
+
+note the typo in the commit log message
+
+  $ cvsci -m"fix file1 [MERGE from v1-1]"
+  cvs commit: Examining .
+  $ cvs -Q tag -d unmerged
+
+convert to hg
+
+  $ cd ..
+  $ hg convert proj proj.hg
+  initializing destination proj.hg repository
+  connecting to */cvsrepo (glob)
+  scanning source...
+  collecting CVS rlog
+  12 log entries
+  creating changesets
+  warning: CVS commit message references non-existent branch 'v1-1':
+  fix file1 [MERGE from v1-1]
+  10 changeset entries
+  sorting...
+  converting...
+  9 add file1 on trunk
+  8 add text
+  7 unrelated change
+  6 add text [MERGE from v1_0]
+  5 add text [MERGE from v1_1]
+  4 add file2 on trunk
+  3 add other text
+  2 add other text [MERGE from HEAD]
+  1 fix file1
+  0 fix file1 [MERGE from v1-1]
+
+complete log
+
+  $ template="{rev}: '{branches}' {desc}\n"
+  $ hg -R proj.hg log --template="$template"
+  9: '' fix file1 [MERGE from v1-1]
+  8: 'v1_1' fix file1
+  7: 'v1_1' add other text [MERGE from HEAD]
+  6: '' add other text
+  5: '' add file2 on trunk
+  4: '' add text [MERGE from v1_1]
+  3: 'v1_1' add text [MERGE from v1_0]
+  2: 'v1_1' unrelated change
+  1: 'v1_0' add text
+  0: '' add file1 on trunk
+
+graphical log
+
+  $ hg -R proj.hg glog --template="$template"
+  o  9: '' fix file1 [MERGE from v1-1]
+  |
+  | o  8: 'v1_1' fix file1
+  | |
+  | o  7: 'v1_1' add other text [MERGE from HEAD]
+  |/|
+  o |  6: '' add other text
+  | |
+  o |  5: '' add file2 on trunk
+  | |
+  o |  4: '' add text [MERGE from v1_1]
+  |\|
+  | o    3: 'v1_1' add text [MERGE from v1_0]
+  | |\
+  +---o  2: 'v1_1' unrelated change
+  | |
+  | o  1: 'v1_0' add text
+  |/
+  o  0: '' add file1 on trunk
+