tests/test-copies.t
changeset 41936 fc4b7a46fda1
parent 41935 cbdd2b56d4c3
child 41937 7694b685bb10
--- a/tests/test-copies.t	Thu Feb 14 17:11:35 2019 +0530
+++ b/tests/test-copies.t	Thu Feb 14 16:09:43 2019 +0530
@@ -1,6 +1,8 @@
 #testcases filelog compatibility
 
   $ cat >> $HGRCPATH << EOF
+  > [extensions]
+  > rebase=
   > [alias]
   > l = log -G -T '{rev} {desc}\n{files}\n'
   > EOF
@@ -552,3 +554,80 @@
       b
      +baba
   
+Test which demonstrate that fullcopytracing algorithm can fail to handle a case when both the csets are dirty
+----------------------------------------------------------------------------------------------------------
+
+  $ newrepo
+  $ echo a > a
+  $ hg add a
+  $ hg ci -m "added a"
+  $ echo b > b
+  $ hg add b
+  $ hg ci -m "added b"
+
+  $ echo foobar > willconflict
+  $ hg add willconflict
+  $ hg ci -m "added willconflict"
+  $ echo c > c
+  $ hg add c
+  $ hg ci -m "added c"
+
+  $ hg l
+  @  3 added c
+  |  c
+  o  2 added willconflict
+  |  willconflict
+  o  1 added b
+  |  b
+  o  0 added a
+     a
+
+  $ hg up ".^^"
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo d > d
+  $ hg add d
+  $ hg ci -m "added d"
+  created new head
+
+  $ echo barfoo > willconflict
+  $ hg add willconflict
+  $ hg ci --amend -m "added willconflict and d"
+
+  $ hg l
+  @  5 added willconflict and d
+  |  d willconflict
+  | o  3 added c
+  | |  c
+  | o  2 added willconflict
+  |/   willconflict
+  o  1 added b
+  |  b
+  o  0 added a
+     a
+
+  $ hg rebase -r . -d 2 -t :other
+  rebasing 5:5018b1509e94 "added willconflict and d" (tip)
+
+  $ hg up 3 -q
+  $ hg l --hidden
+  o  6 added willconflict and d
+  |  d willconflict
+  | x  5 added willconflict and d
+  | |  d willconflict
+  | | x  4 added d
+  | |/   d
+  +---@  3 added c
+  | |    c
+  o |  2 added willconflict
+  |/   willconflict
+  o  1 added b
+  |  b
+  o  0 added a
+     a
+
+Now if we trigger a merge between cset revision 3 and 6 using base revision 4, in this case
+both the merging csets will be dirty as no one is descendent of base revision:
+
+  $ hg graft -r 6 --base 4 --hidden 2>&1 | grep "AssertionError"
+  AssertionError
+