# HG changeset patch # User Martin von Zweigbergk # Date 1500067855 25200 # Node ID 855a1856466d8c6ea9ee897ca043aa8deb2114f6 # Parent 644dddccc265a3555bc0b4c5e36972528714c21b 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 diff -r 644dddccc265 -r 855a1856466d tests/test-rebase-obsolete.t --- 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 < 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)