changeset 34971:ad671b4cb9fc stable

tests: add a test demonstrating issue5731 If origbackups are in use, a symlink to a valid directory is backed up, and an update is made that attempts to backup a file or link over that symlink, we abort with a bad error message instead of successfully updating. Differential Revision: https://phab.mercurial-scm.org/D1310
author Mark Thomas <mbthomas@fb.com>
date Fri, 03 Nov 2017 09:27:35 -0700
parents 4cc910cd81d0
children 99ab7bc944d2
files tests/test-origbackup-conflict.t
diffstat 1 files changed, 30 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-origbackup-conflict.t	Tue Nov 07 13:15:35 2017 -0500
+++ b/tests/test-origbackup-conflict.t	Fri Nov 03 09:27:35 2017 -0700
@@ -12,11 +12,12 @@
   $ hg add base
   $ hg commit -m "base"
 
-Make a dir named b that contains a file
+Make a dir named b that contains a file, and a file named d
 
   $ mkdir -p b
   $ echo c1 > b/c
-  $ hg add b/c
+  $ echo d1 > d
+  $ hg add b/c d
   $ hg commit -m "c1"
   $ hg bookmark c1
 
@@ -30,15 +31,17 @@
   b/c: replacing untracked file
   getting b/c
   creating directory: $TESTTMP/repo/.hg/origbackups/b (glob)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting d
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (activating bookmark c1)
   $ test -f .hg/origbackups/b/c
 
-Make a file named b
+Make files named b and d
 
   $ hg up -q 0
   $ echo b1 > b
-  $ hg add b
+  $ echo d2 > d
+  $ hg add b d
   $ hg commit -m b1
   created new head
   $ hg bookmark b1
@@ -52,7 +55,8 @@
   b: replacing untracked file
   getting b
   removing conflicting directory: $TESTTMP/repo/.hg/origbackups/b (glob)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting d
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (activating bookmark b1)
   $ test -f .hg/origbackups/b
 
@@ -67,40 +71,54 @@
   getting b/c
   creating directory: $TESTTMP/repo/.hg/origbackups/b (glob)
   removing conflicting file: $TESTTMP/repo/.hg/origbackups/b (glob)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting d
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (activating bookmark c1)
   $ test -d .hg/origbackups/b
 
-Cause a symlink to be backed up that points to a valid location from the backup dir
+Cause two symlinks to be backed up that points to a valid location from the backup dir
 
   $ hg up -q 0
   $ mkdir ../sym-link-target
 #if symlink
   $ ln -s ../../../sym-link-target b
+  $ ln -s ../../../sym-link-target d
 #else
-  $ touch b
+  $ touch b d
 #endif
   $ hg up b1
   b: replacing untracked file
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  d: replacing untracked file
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (activating bookmark b1)
 #if symlink
   $ readlink.py .hg/origbackups/b
   .hg/origbackups/b -> ../../../sym-link-target
 #endif
 
-Perform an update that causes b/c to be backed up again - it should not go into the target dir
+Perform an update that causes b/c and d to be backed up again - b/c should not go into the target dir
 
   $ hg up -q 0
   $ mkdir b
   $ echo c4 > b/c
+  $ echo d3 > d
   $ hg up --verbose c1
   resolving manifests
   b/c: replacing untracked file
+  d: replacing untracked file
   getting b/c
   creating directory: $TESTTMP/repo/.hg/origbackups/b (glob)
   removing conflicting file: $TESTTMP/repo/.hg/origbackups/b (glob)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting d
+  removing conflicting directory: $TESTTMP/repo/.hg/origbackups/d (glob)
+  abort: None
+  [255]
+
+Workaround issue by deleting d:
+
+  $ rm d
+  $ hg up c1
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (activating bookmark c1)
   $ cat .hg/origbackups/b/c
   c4