Mercurial > hg-stable
changeset 5696:6ba5ecc27d33
merge with crew-stable
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Thu, 27 Dec 2007 13:39:59 +0100 |
parents | 1ce185f3c640 (current diff) 8a65ea986755 (diff) |
children | 98f45e141567 |
files | mercurial/ui.py |
diffstat | 3 files changed, 142 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/ui.py Wed Dec 26 23:03:32 2007 +0100 +++ b/mercurial/ui.py Thu Dec 27 13:39:59 2007 +0100 @@ -412,14 +412,15 @@ def prompt(self, msg, pat=None, default="y", matchflags=0): if not self.interactive: return default - try: - r = self._readline(msg + ' ') - if not pat or re.match(pat, r, matchflags): - return r - else: - self.write(_("unrecognized response\n")) - except EOFError: - raise util.Abort(_('response expected')) + while True: + try: + r = self._readline(msg + ' ') + if not pat or re.match(pat, r, matchflags): + return r + else: + self.write(_("unrecognized response\n")) + except EOFError: + raise util.Abort(_('response expected')) def getpass(self, prompt=None, default=None): if not self.interactive: return default
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-merge-prompt Thu Dec 27 13:39:59 2007 +0100 @@ -0,0 +1,69 @@ +#!/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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-merge-prompt.out Thu Dec 27 13:39:59 2007 +0100 @@ -0,0 +1,64 @@ +adding file1 +adding file2 +2 files updated, 0 files merged, 0 files removed, 0 files unresolved + +# non-interactive merge +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +(branch merge, don't forget to commit) +status: +M file2 +C file1 +file1: +1 +changed +file2: +2 +changed + +# interactive merge +0 files updated, 0 files merged, 1 files removed, 0 files unresolved + local changed file1 which remote deleted +use (c)hanged version or (d)elete? remote changed file2 which local deleted +use (c)hanged version or leave (d)eleted? 0 files updated, 0 files merged, 0 files removed, 0 files unresolved +(branch merge, don't forget to commit) +status: +file2: No such file or directory +C file1 +file1: +1 +changed +file2 does not exist + +# interactive merge with bad input +0 files updated, 0 files merged, 0 files removed, 0 files unresolved + local changed file1 which remote deleted +use (c)hanged version or (d)elete? unrecognized response + local changed file1 which remote deleted +use (c)hanged version or (d)elete? unrecognized response + local changed file1 which remote deleted +use (c)hanged version or (d)elete? remote changed file2 which local deleted +use (c)hanged version or leave (d)eleted? unrecognized response +remote changed file2 which local deleted +use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved +(branch merge, don't forget to commit) +status: +M file2 +R file1 +file1 does not exist +file2: +2 +changed + +# interactive merge with not enough input +1 files updated, 0 files merged, 1 files removed, 0 files unresolved + local changed file1 which remote deleted +use (c)hanged version or (d)elete? remote changed file2 which local deleted +use (c)hanged version or leave (d)eleted? abort: response expected +failed +status: +file2: No such file or directory +C file1 +file1: +1 +changed +file2 does not exist