tests: add test for path conflicts during update
Differential Revision: https://phab.mercurial-scm.org/D786
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-pathconflicts-update.t Mon Oct 02 14:05:30 2017 -0700
@@ -0,0 +1,141 @@
+ $ hg init repo
+ $ cd repo
+ $ echo base > base
+ $ hg add base
+ $ hg commit -m "base"
+ $ hg bookmark -i base
+ $ mkdir a
+ $ echo 1 > a/b
+ $ hg add a/b
+ $ hg commit -m "file"
+ $ hg bookmark -i file
+ $ echo 2 > a/b
+ $ hg commit -m "file2"
+ $ hg bookmark -i file2
+ $ hg up 0
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ mkdir a
+ $ ln -s c a/b
+ $ hg add a/b
+ $ hg commit -m "link"
+ created new head
+ $ hg bookmark -i link
+ $ hg up 0
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ mkdir -p a/b/c
+ $ echo 2 > a/b/c/d
+ $ hg add a/b/c/d
+ $ hg commit -m "dir"
+ created new head
+ $ hg bookmark -i dir
+
+Update - local file conflicts with remote directory:
+
+ $ hg up -q 0
+ $ mkdir a
+ $ echo 9 > a/b
+ $ hg up dir
+ a/b: untracked file conflicts with directory
+ abort: untracked files in working directory differ from files in requested revision
+ [255]
+ $ hg up dir --config merge.checkunknown=warn
+ a/b: replacing untracked file
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (activating bookmark dir)
+ $ cat a/b.orig
+ 9
+ $ rm a/b.orig
+
+Update - local symlink conflicts with remote directory:
+
+ $ hg up -q 0
+ $ mkdir a
+ $ ln -s x a/b
+ $ hg up dir
+ a/b: untracked file conflicts with directory
+ abort: untracked files in working directory differ from files in requested revision
+ [255]
+ $ hg up dir --config merge.checkunknown=warn
+ a/b: replacing untracked file
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (activating bookmark dir)
+ $ readlink a/b.orig
+ x
+ $ rm a/b.orig
+
+Update - local directory conflicts with remote file
+
+ $ hg up -q 0
+ $ mkdir -p a/b/c
+ $ echo 9 > a/b/c/d
+ $ hg up file
+ a/b: untracked directory conflicts with file
+ abort: untracked files in working directory differ from files in requested revision
+ [255]
+ $ hg up file --config merge.checkunknown=warn
+ a/b: replacing untracked files in directory
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (activating bookmark file)
+ $ cat a/b
+ 1
+ $ test -d a/b.orig
+ $ rm -rf a/b.orig
+
+Update - local directory conflicts with remote symlink
+
+ $ hg up -q 0
+ $ mkdir -p a/b/c
+ $ echo 9 > a/b/c/d
+ $ hg up link
+ a/b: untracked directory conflicts with file
+ abort: untracked files in working directory differ from files in requested revision
+ [255]
+ $ hg up link --config merge.checkunknown=warn
+ a/b: replacing untracked files in directory
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (activating bookmark link)
+ $ readlink a/b
+ c
+ $ test -d a/b.orig
+ $ rm -rf a/b.orig
+
+Update - local renamed file conflicts with remote directory
+
+ $ hg up -q 0
+ $ hg mv base a
+ $ hg status -C
+ A a
+ base
+ R base
+ $ hg up --check dir
+ abort: uncommitted changes
+ [255]
+ $ hg up dir
+ a: path conflict - a file or link has the same name as a directory
+ the local file has been renamed to a~d20a80d4def3
+ resolve manually then use 'hg resolve --mark a'
+ 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
+ use 'hg resolve' to retry unresolved file merges
+ (activating bookmark dir)
+ [1]
+ $ hg status -C
+ A a~d20a80d4def3
+ base
+ R base
+ $ hg resolve --list
+ P a
+ $ hg up --clean -q 0
+
+Update clean - local directory conflicts with changed remote file
+
+ $ hg up -q file
+ $ rm a/b
+ $ mkdir a/b
+ $ echo 9 > a/b/c
+ $ hg up file2 --check --config merge.checkunknown=warn
+ abort: uncommitted changes
+ [255]
+ $ hg up file2 --clean
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (activating bookmark file2)
+