view tests/test-churn @ 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 ffd85ab578be
children 2e7647d25458
line wrap: on
line source

#!/bin/sh

echo "[extensions]" >> $HGRCPATH
echo "churn=" >> $HGRCPATH

echo % create test repository
hg init repo
cd repo
echo a > a
hg ci -Am adda -u user1 -d 6:00
echo b >> a
echo b > b
hg ci -m changeba -u user2 -d 9:00 a
hg ci -Am addb -u user2 -d 9:30
echo c >> a
echo c >> b
echo c > c
hg ci -m changeca -u user3 -d 12:00 a
hg ci -m changecb -u user3 -d 12:15 b
hg ci -Am addc -u user3 -d 12:30
mkdir -p d/e
echo abc > d/e/f1.txt
hg ci -Am "add d/e/f1.txt" -u user1 -d 12:45 d/e/f1.txt
mkdir -p d/g
echo def > d/g/f2.txt
hg ci -Am "add d/g/f2.txt" -u user1 -d 13:00 d/g/f2.txt

echo % churn separate directories
cd d
hg churn e
echo % churn all
hg churn
echo % churn excluding one dir
hg churn -X e
echo % churn up to rev 2
hg churn -r :2
cd ..
echo % churn with aliases
cat > ../aliases <<EOF
user1 alias1
user3 alias3
EOF
hg churn --aliases ../aliases
echo % churn with .hgchurn
mv ../aliases .hgchurn
hg churn
rm .hgchurn
echo % churn with column specifier
COLUMNS=40 hg churn
echo % churn by hour
hg churn -f '%H' -s

echo % churn with separated added/removed lines
hg rm d/g/f2.txt
hg ci -Am "removed d/g/f2.txt" -u user1 -d 14:00 d/g/f2.txt
hg churn --diffstat
echo % churn --diffstat with color
hg --config extensions.color= churn --config color.mode=ansi \
    --diffstat --color=always

echo % changeset number churn
hg churn -c

echo 'with space = no-space' >> ../aliases
echo a >> a
hg commit -m a -u 'with space' -d 15:00
echo % churn with space in alias
hg churn --aliases ../aliases -r tip

cd ..

# issue 833: ZeroDivisionError
hg init issue-833
cd issue-833
touch foo
hg ci -Am foo
# this was failing with a ZeroDivisionError
hg churn
cd ..