--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-merge-changedelete.t Wed Nov 11 17:32:41 2015 -0800
@@ -0,0 +1,175 @@
+Test for
+b5605d88dc27: Make ui.prompt repeat on "unrecognized response" again
+ (issue897)
+
+840e2b315c1f: Fix misleading error and prompts during update/merge
+ (issue556)
+
+Make sure HGMERGE doesn't interfere with the test
+ $ unset HGMERGE
+
+ $ status() {
+ > 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
+
+ $ echo 1 > file1
+ $ echo 2 > file2
+ $ hg ci -Am 'added file1 and file2'
+ adding file1
+ adding file2
+
+ $ hg rm file1
+ $ echo changed >> file2
+ $ hg ci -m 'removed file1, changed file2'
+
+ $ hg co 0
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+ $ echo changed >> file1
+ $ hg rm file2
+ $ hg ci -m 'changed file1, removed file2'
+ created new head
+
+
+Non-interactive merge:
+
+ $ hg merge -y
+ local changed file1 which remote deleted
+ use (c)hanged version or (d)elete? c
+ remote changed file2 which local deleted
+ use (c)hanged version or leave (d)eleted? c
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+ $ status
+ --- status ---
+ M file2
+ C file1
+ --- file1 ---
+ 1
+ changed
+ --- file2 ---
+ 2
+ changed
+
+
+Interactive merge:
+
+ $ hg co -C
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+ $ hg merge --config ui.interactive=true <<EOF
+ > c
+ > d
+ > EOF
+ local changed file1 which remote deleted
+ use (c)hanged version or (d)elete? c
+ remote changed file2 which local deleted
+ use (c)hanged version or leave (d)eleted? d
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+ $ status
+ --- status ---
+ file2: * (glob)
+ C file1
+ --- file1 ---
+ 1
+ changed
+ *** file2 does not exist
+
+
+Interactive merge with bad input:
+
+ $ hg co -C
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+ $ hg merge --config ui.interactive=true <<EOF
+ > foo
+ > bar
+ > d
+ > baz
+ > c
+ > EOF
+ local changed file1 which remote deleted
+ use (c)hanged version or (d)elete? foo
+ unrecognized response
+ local changed file1 which remote deleted
+ use (c)hanged version or (d)elete? bar
+ unrecognized response
+ local changed file1 which remote deleted
+ use (c)hanged version or (d)elete? d
+ remote changed file2 which local deleted
+ use (c)hanged version or leave (d)eleted? baz
+ unrecognized response
+ remote changed file2 which local deleted
+ use (c)hanged version or leave (d)eleted? c
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+ $ status
+ --- status ---
+ M file2
+ R file1
+ *** file1 does not exist
+ --- file2 ---
+ 2
+ changed
+
+
+Interactive merge with not enough input:
+
+ $ hg co -C
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+ $ hg merge --config ui.interactive=true <<EOF
+ > d
+ > EOF
+ local changed file1 which remote deleted
+ use (c)hanged version or (d)elete? d
+ remote changed file2 which local deleted
+ use (c)hanged version or leave (d)eleted? abort: response expected
+ [255]
+
+ $ status
+ --- status ---
+ file2: * (glob)
+ C file1
+ --- file1 ---
+ 1
+ changed
+ *** file2 does not exist
+
+Non-interactive linear update
+
+ $ hg co -C 0
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo changed >> file1
+ $ hg rm file2
+ $ hg update 1 -y
+ local changed file1 which remote deleted
+ use (c)hanged version or (d)elete? c
+ remote changed file2 which local deleted
+ use (c)hanged version or leave (d)eleted? c
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ status
+ --- status ---
+ A file1
+ C file2
+ --- file1 ---
+ 1
+ changed
+ --- file2 ---
+ 2
+ changed