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
--- 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)