tests/test-merge-prompt.t
changeset 12259 7b05cb9ac6d2
parent 5672 8a65ea986755
child 12328 b63f6422d2a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-merge-prompt.t	Sun Sep 12 11:52:13 2010 +0200
@@ -0,0 +1,144 @@
+# Test for
+#
+#   b5605d88dc27: Make ui.prompt repeat on "unrecognized response" again
+#                 (issue897)
+#
+#   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
+
+  $ 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 || echo "failed"
+   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 || echo "failed"
+  > c
+  > d
+  > EOF
+   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
+  --- status ---
+  file2: No such file or directory
+  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 || echo "failed"
+  > foo
+  > bar
+  > d
+  > baz
+  > c
+  > EOF
+   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
+  --- 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 || echo "failed"
+  > d
+  > EOF
+   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
+  --- status ---
+  file2: No such file or directory
+  C file1
+  --- file1 ---
+  1
+  changed
+  *** file2 does not exist
+