18
18
from bzrlib.errors import UnknownFormatError, NoSuchFile, ConflictsInTree
19
19
from bzrlib.revision import NULL_REVISION
20
20
from bzrlib.tests import TestCase, TestCaseWithTransport
21
from bzrlib.trace import mutter
22
23
from rebase import (marshall_rebase_plan, unmarshall_rebase_plan,
23
24
replay_snapshot, generate_simple_plan,
27
28
remove_rebase_plan, read_active_rebase_revid,
28
29
write_active_rebase_revid, write_rebase_plan, MapTree,
29
30
ReplaySnapshotError, ReplayParentsInconsistent,
30
replay_delta_workingtree, replay_determine_base)
31
replay_delta_workingtree)
33
34
class RebasePlanReadWriterTests(TestCase):
530
531
oldwt = self.make_branch_and_tree("old")
531
532
self.build_tree(['old/afile'])
532
file("old/afile", "w").write("A\n")
533
file("old/afile", "w").write("A\n" * 10)
533
534
oldwt.add(["afile"])
534
535
oldwt.commit("base", rev_id="A")
535
536
newwt = oldwt.bzrdir.sprout("new").open_workingtree()
536
file("old/afile", "w").write("B\n")
537
file("old/afile", "w").write("A\n"*10 + "B\n")
537
538
oldwt.commit("bla", rev_id="B")
538
file("old/afile", "w").write("C\n")
539
file("old/afile", "w").write("A\n" * 10 + "C\n")
539
540
oldwt.commit("bla", rev_id="C")
540
541
self.build_tree(['new/bfile'])
541
542
newwt.add(["bfile"])
543
file("new/bfile", "w").write("D\n")
542
544
newwt.commit("bla", rev_id="D")
543
file("new/bfile", "w").write("blaaah")
545
file("new/afile", "w").write("E\n" + "A\n"*10 + "B\n")
546
file("new/bfile", "w").write("D\nE\n")
544
547
newwt.add_pending_merge("B")
545
548
newwt.commit("bla", rev_id="E")
546
549
newwt.branch.repository.fetch(oldwt.branch.repository)
548
551
oldrev = newwt.branch.repository.get_revision("D")
549
552
newrev = newwt.branch.repository.get_revision("D'")
550
553
self.assertEquals(["C"], newrev.parent_ids)
551
replay_delta_workingtree(newwt, "E", "E'", ["D'"])
554
self.assertRaises(ConflictsInTree,
555
lambda: replay_delta_workingtree(newwt, "E", "E'", ["D'"]))
556
self.assertEquals("E\n" + "A\n" * 10 + "C\n",
557
open("new/afile", 'r').read())
558
mutter("bfile: %s" % open("new/bfile", "r").read())
552
559
oldrev = newwt.branch.repository.get_revision("E")
553
560
newrev = newwt.branch.repository.get_revision("E'")
554
561
self.assertEquals(["D'"], newrev.parent_ids)
565
572
def test_create(self):
566
573
ReplayParentsInconsistent("afileid", "arevid")
568
class DetermineWorkingTree(TestCase):
569
def test_simple(self):
570
self.assertEquals("B",
571
replay_determine_base({"B": ["A"], "B'": ["A"], "C": ["B"]},
574
def test_diverged(self):
588
self.assertEquals("D",
589
replay_determine_base(graph, "E", ["D'"]))
590
self.assertEquals("A",
591
replay_determine_base(graph, "D", ["C"]))
593
def test_merged(self):
607
self.assertEquals("D",
608
replay_determine_base(graph, "E", ["D'"]))
609
self.assertEquals("A",
610
replay_determine_base(graph, "D", ["C"]))