view tests/test-convert-cvs-detectmerge @ 9485:7d6ac5d7917c

test-gendoc: add tests for all languages This ensures that we catch errors in the reST syntax early and for all languages. The only change needed in gendoc.py was to correct the computation of section underlines for Asian languages.
author Martin Geisler <mg@lazybytes.net>
date Sun, 27 Sep 2009 10:12:02 +0200
parents 1f0f01bc86a5
children 56a5f80556f5
line wrap: on
line source

#!/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=builtin" >> $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"