view tests/test-merge-prompt @ 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 8a65ea986755
children
line wrap: on
line source

#!/bin/sh
#
# Test for b5605d88dc27
#  Make ui.prompt repeat on "unrecognized response" again (issue897)
# and for 840e2b315c1f
#  Fix misleading error and prompts during update/merge (issue556)

status() {
    [ $? -ne 0 ] && echo "failed."
    echo "status:"
    hg st -A file1 file2
    for file in file1 file2; do
        if [ -f $file ]; then
            echo "$file:"
            cat $file
        else
            echo "$file does not exist"
        fi
    done
}

hg init repo
cd repo
echo 1 > file1
echo 2 > file2
hg ci -Am 'added file1 and file2' # rev 0

hg rm file1
echo changed >> file2
hg ci -m 'removed file1, changed file2' # rev 1

hg co 0
echo changed >> file1
hg rm file2
hg ci -m 'changed file1, removed file2' # rev 2

echo
echo "# non-interactive merge"
hg merge -y || echo "failed"
status

echo
echo "# interactive merge"
hg co -C
hg merge --config ui.interactive=true <<EOF || echo "failed"
c
d
EOF
status

echo
echo "# interactive merge with bad input"
hg co -C
hg merge --config ui.interactive=true <<EOF || echo "failed"
foo
bar
d
baz
c
EOF
status

echo
echo "# interactive merge with not enough input"
hg co -C
hg merge --config ui.interactive=true <<EOF || echo "failed"
d
EOF
status