changeset 33678:855a1856466d

tests: demonstrate crash when trying to rebase merge without its parents As the test case shows, when "hg rebase -d G -r 'B + D + F'" is run on the following graph, we crash with traceback. It's reasonable to fail because we can not easily produce a correct rebased F. The problem is what diff to apply to either the rebased B or the rebased D. We could potentially produce the result by e.g. applying the (F-D) diff to the rebased B and then applying the reverse (E-D) diff on top, but that could result in merge conflicts in each of those steps, which we don't have a way of dealing with. So for now, let's just add a test case to demonstrate that we crash (i.e. the AssertionError is clearly incorrect since the user can run into it). F /| C E | | B D G \|/ A Differential Revision: https://phab.mercurial-scm.org/D212
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 14 Jul 2017 14:30:55 -0700
parents 644dddccc265
children 8fbd56a4073c
files tests/test-rebase-obsolete.t
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-rebase-obsolete.t	Sun Jul 16 23:17:41 2017 -0700
+++ b/tests/test-rebase-obsolete.t	Fri Jul 14 14:30:55 2017 -0700
@@ -473,6 +473,27 @@
   
   $ cd ..
 
+Detach both parents
+
+  $ hg init double-detach
+  $ cd double-detach
+
+  $ hg debugdrawdag <<EOF
+  >   F
+  >  /|
+  > C E
+  > | |
+  > B D G
+  >  \|/
+  >   A
+  > EOF
+
+BROKEN: This raises an exception
+  $ hg rebase -d G -r 'B + D + F' 2>&1 | grep '^AssertionError'
+  AssertionError: no base found to rebase on (defineparents called wrong)
+
+  $ cd ..
+
 test on rebase dropping a merge
 
 (setup)