view tests/test-strip-cross @ 11988:8380ed691df8

util: add an interpolate() function to for replacing multiple values util.interpolate can be used to replace multiple items in a string all at once (and optionally apply a function to the replacement), without worrying about recursing: >>> import util >>> s = '$foo, $spam' >>> util.interpolate(r'\$', { 'foo': 'bar', 'spam': 'eggs' }, s) 'bar, eggs' >>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s) 'spam, foo' >>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s, lambda s: s.upper()) 'SPAM, FOO' The patch also changes filemerge.py to use this new function.
author Steve Losh <steve@stevelosh.com>
date Wed, 18 Aug 2010 18:18:26 -0400
parents 2313dc4d9817
children
line wrap: on
line source

#!/bin/sh

# test stripping of filelogs where the linkrev doesn't always increase

. $TESTDIR/helpers.sh
echo '[extensions]' >> $HGRCPATH
echo 'hgext.mq =' >> $HGRCPATH

hg init orig
cd orig

commit()
{
    hg up -qC null
    count=1
    for i in "$@"; do
	for f in $i; do
	    echo $count > $f
	done
	count=`expr $count + 1`
    done
    hg commit -qAm "$*"
}

# 2 1 0 2 0 1 2
commit '201 210'

commit '102 120' '210'

commit '021'

commit '201' '021 120'

commit '012 021' '102 201' '120 210'

commit 'manifest-file'

commit '102 120' '012 210' '021 201'

commit '201 210' '021 120' '012 102'

HGUSER=another-user; export HGUSER
commit 'manifest-file'

commit '012' 'manifest-file'

cd ..
hg clone -q -U -r -1 -r -2 -r -3 -r -4 -r -6 orig crossed

for i in crossed/.hg/store/00manifest.i crossed/.hg/store/data/*.i; do
    echo $i
    hg debugindex $i
    echo
done

for i in 0 1 2 3 4; do
    hg clone -q -U --pull crossed $i
    echo "% Trying to strip revision $i"
    hg --cwd $i strip $i | hidebackup
    echo "% Verifying"
    hg --cwd $i verify
    echo
done