removeemptydirs: add test for `hg split` inside a disappearing directory
authorKyle Lippincott <spectral@google.com>
Wed, 11 Jul 2018 13:02:06 -0700
changeset 38662 ad2aa4e85047
parent 38661 8ac0c9cd4c48
child 38663 93d9690ff2b0
removeemptydirs: add test for `hg split` inside a disappearing directory Differential Revision: https://phab.mercurial-scm.org/D3927
tests/test-removeemptydirs.t
--- a/tests/test-removeemptydirs.t	Wed Jul 11 14:28:13 2018 +0100
+++ b/tests/test-removeemptydirs.t	Wed Jul 11 13:02:06 2018 -0700
@@ -149,7 +149,8 @@
   $ hg init issue5826_withrm
   $ cd issue5826_withrm
 
-  $ cat >> $HGRCPATH <<EOF
+Let's only turn this on for this repo so that we don't contaminate later tests.
+  $ cat >> .hg/hgrc <<EOF
   > [extensions]
   > histedit =
   > EOF
@@ -199,7 +200,8 @@
   $ hg init issue5826_norm
   $ cd issue5826_norm
 
-  $ cat >> $HGRCPATH <<EOF
+Let's only turn this on for this repo so that we don't contaminate later tests.
+  $ cat >> .hg/hgrc <<EOF
   > [extensions]
   > histedit =
   > [experimental]
@@ -240,3 +242,89 @@
   ***
   add baz
   0:d17db4b0303a add bar
+
+  $ cd $TESTTMP
+
+Testing `hg split` being run from inside of a directory that was created in the
+commit being split:
+
+  $ hg init hgsplit
+  $ cd hgsplit
+  $ cat >> .hg/hgrc << EOF
+  > [ui]
+  > interactive = 1
+  > [extensions]
+  > split =
+  > EOF
+  $ echo anchor > anchor.txt
+  $ hg ci -qAm anchor
+
+Create a changeset with '/otherfile_in_root' and 'somedir/foo', then try to
+split it.
+  $ echo otherfile > otherfile_in_root
+  $ mkdir somedir
+  $ cd somedir
+  $ echo hi > foo
+  $ hg ci -qAm split_me
+(Note: need to make this file not in this directory, or else the bug doesn't
+reproduce; we're using a separate file due to concerns of portability on
+`echo -e`)
+  $ cat > ../split_commands << EOF
+  > n
+  > y
+  > y
+  > a
+  > EOF
+  $ cat ../split_commands | hg split
+  current directory was removed
+  (consider changing to repo root: $TESTTMP/hgsplit)
+  diff --git a/otherfile_in_root b/otherfile_in_root
+  new file mode 100644
+  examine changes to 'otherfile_in_root'? [Ynesfdaq?] n
+  
+  diff --git a/somedir/foo b/somedir/foo
+  new file mode 100644
+  examine changes to 'somedir/foo'? [Ynesfdaq?] y
+  
+  @@ -0,0 +1,1 @@
+  +hi
+  record change 2/2 to 'somedir/foo'? [Ynesfdaq?] y
+  
+  abort: $ENOENT$
+  [255]
+
+Let's try that again without the rmdir
+  $ cd $TESTTMP/hgsplit/somedir
+Show that the previous split didn't do anything
+  $ hg log -T '{rev}:{node|short} {desc}\n'
+  1:e26b22a4f0b7 split_me
+  0:7e53273730c0 anchor
+  $ hg status
+  ? split_commands
+Try again
+  $ cat ../split_commands | hg $NO_RM split
+  diff --git a/otherfile_in_root b/otherfile_in_root
+  new file mode 100644
+  examine changes to 'otherfile_in_root'? [Ynesfdaq?] n
+  
+  diff --git a/somedir/foo b/somedir/foo
+  new file mode 100644
+  examine changes to 'somedir/foo'? [Ynesfdaq?] y
+  
+  @@ -0,0 +1,1 @@
+  +hi
+  record change 2/2 to 'somedir/foo'? [Ynesfdaq?] y
+  
+  created new head
+  diff --git a/otherfile_in_root b/otherfile_in_root
+  new file mode 100644
+  examine changes to 'otherfile_in_root'? [Ynesfdaq?] a
+  
+  saved backup bundle to $TESTTMP/hgsplit/.hg/strip-backup/*-split.hg (glob)
+Show that this split did something
+  $ hg log -T '{rev}:{node|short} {desc}\n'
+  2:a440f24fca4f split_me
+  1:c994f20276ab split_me
+  0:7e53273730c0 anchor
+  $ hg status
+  ? split_commands