Patchwork D786: tests: add test for path conflicts during update

login
register
mail settings
Submitter phabricator
Date Oct. 1, 2017, 9:33 a.m.
Message ID <dbad740588842fcf4e53b6b20e6e35a4@localhost.localdomain>
Download mbox | patch
Permalink /patch/24290/
State Not Applicable
Headers show

Comments

phabricator - Oct. 1, 2017, 9:33 a.m.
mbthomas updated this revision to Diff 2222.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D786?vs=2004&id=2222

REVISION DETAIL
  https://phab.mercurial-scm.org/D786

AFFECTED FILES
  tests/test-pathconflicts-update.t

CHANGE DETAILS




To: mbthomas, #hg-reviewers, swhitaker
Cc: swhitaker, mercurial-devel

Patch

diff --git a/tests/test-pathconflicts-update.t b/tests/test-pathconflicts-update.t
new file mode 100644
--- /dev/null
+++ b/tests/test-pathconflicts-update.t
@@ -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)
+