Rev 18: More tests, extend MapTree a bit. in file:///data/jelmer/bzr-rebase/trunk/
Jelmer Vernooij
jelmer at samba.org
Thu Jul 12 09:22:42 BST 2007
At file:///data/jelmer/bzr-rebase/trunk/
------------------------------------------------------------
revno: 18
revision-id: jelmer at samba.org-20070709201858-0hsbv48mwm09vt16
parent: jelmer at samba.org-20070709163514-l1pqhcthz06lawak
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Mon 2007-07-09 21:18:58 +0100
message:
More tests, extend MapTree a bit.
modified:
README readme-20070626220000-c62864tuxlldx6uc-1
maptree.py maptree.py-20070709163407-quin1nc7pd9bp2mo-1
test_maptree.py test_maptree.py-20070709163406-wv3n8o12iygpxf4l-1
test_rebase.py test_rebase.py-20070626221123-ellanmf93nw8z9r1-2
=== modified file 'README'
--- a/README 2007-07-09 16:31:06 +0000
+++ b/README 2007-07-09 20:18:58 +0000
@@ -8,6 +8,13 @@
branch is specified, it will use the current parent branch (which is usually
what you want).
+If the rebase fails halfway through, perhaps because of conflicts
+replaying a revision, it will abort. When it's aborted, you can either resolve
+the conflicts (using "bzr resolve") and run ``bzr rebase-continue`` or
+abort the rebase and undo all changes it's done using ``bzr rebase-abort``.
+The current state of the rebase can be viewed with the ``bzr rebase-todo``
+command.
+
In the future, I hope it can also support rebasing on top of an unrelated
branch.
=== modified file 'maptree.py'
--- a/maptree.py 2007-07-09 16:35:14 +0000
+++ b/maptree.py 2007-07-09 20:18:58 +0000
@@ -58,6 +58,14 @@
for path, ie in self.oldinv.iter_entries():
yield path, self.map_ie(ie)
+ def path2id(self, path):
+ return self.maptree.new_id(self.oldinv.path2id(path))
+
+ def id2path(self, id):
+ return self.oldinv.id2path(self.maptree.old_id(id))
+
+ def has_id(self, id):
+ return self.oldinv.has_id(self.maptree.old_id(id))
class MapTree:
"""Wrapper around a tree that translates file ids.
@@ -105,3 +113,6 @@
def is_executable(self, file_id, path=None):
return self.oldtree.is_executable(self.old_id(file_id=file_id),
path=path)
+
+ def has_filename(self, filename):
+ return self.oldtree.has_filename(filename)
=== modified file 'test_maptree.py'
--- a/test_maptree.py 2007-07-09 16:35:14 +0000
+++ b/test_maptree.py 2007-07-09 20:18:58 +0000
@@ -21,14 +21,74 @@
from maptree import MapTree
-class MapTreeTests(TestCaseWithTransport):
+class EmptyMapTreeTests(TestCaseWithTransport):
def setUp(self):
- super(MapTreeTests, self).setUp()
-
- def test_empty_map(self):
- tree = self.make_branch_and_memory_tree('branch')
- builder = TreeBuilder()
- builder.start_tree(tree)
- builder.build(['foo'])
- builder.finish_tree()
- m = MapTree(tree, {})
+ super(EmptyMapTreeTests, self).setUp()
+ tree = self.make_branch_and_tree('branch')
+ self.oldtree = tree
+
+ def test_has_filename(self):
+ self.oldtree.lock_write()
+ builder = TreeBuilder()
+ builder.start_tree(self.oldtree)
+ builder.build(['foo'])
+ builder.finish_tree()
+ self.maptree = MapTree(self.oldtree, {})
+ self.oldtree.unlock()
+ self.assertTrue(self.maptree.has_filename('foo'))
+ self.assertTrue(self.oldtree.has_filename('foo'))
+ self.assertFalse(self.maptree.has_filename('bar'))
+
+ def test_inventory_len(self):
+ self.oldtree.lock_write()
+ builder = TreeBuilder()
+ builder.start_tree(self.oldtree)
+ builder.build(['foo'])
+ builder.build(['bar'])
+ builder.build(['bla'])
+ builder.finish_tree()
+ self.maptree = MapTree(self.oldtree, {})
+ self.oldtree.unlock()
+ self.oldtree.lock_read()
+ self.assertEquals(4, len(self.oldtree.inventory))
+ self.oldtree.unlock()
+ self.assertEquals(4, len(self.maptree.inventory))
+
+ def test_path2id(self):
+ self.oldtree.lock_write()
+ builder = TreeBuilder()
+ builder.start_tree(self.oldtree)
+ builder.build(['foo'])
+ builder.build(['bar'])
+ builder.build(['bla'])
+ builder.finish_tree()
+ self.maptree = MapTree(self.oldtree, {})
+ self.assertEquals(self.oldtree.inventory.path2id("foo"),
+ self.maptree.inventory.path2id("foo"))
+
+ def test_id2path(self):
+ self.oldtree.lock_write()
+ builder = TreeBuilder()
+ builder.start_tree(self.oldtree)
+ builder.build(['foo'])
+ builder.build(['bar'])
+ builder.build(['bla'])
+ builder.finish_tree()
+ self.maptree = MapTree(self.oldtree, {})
+ self.assertEquals("foo",
+ self.maptree.inventory.id2path(
+ self.maptree.inventory.path2id("foo")))
+
+ def test_has_id(self):
+ self.oldtree.lock_write()
+ builder = TreeBuilder()
+ builder.start_tree(self.oldtree)
+ builder.build(['foo'])
+ builder.build(['bar'])
+ builder.build(['bla'])
+ builder.finish_tree()
+ self.maptree = MapTree(self.oldtree, {})
+ self.assertTrue(self.maptree.inventory.has_id(
+ self.maptree.inventory.path2id("foo")))
+ self.assertFalse(self.maptree.inventory.has_id("bar"))
+
=== modified file 'test_rebase.py'
--- a/test_rebase.py 2007-07-09 16:35:14 +0000
+++ b/test_rebase.py 2007-07-09 20:18:58 +0000
@@ -22,10 +22,10 @@
from rebase import (marshall_rebase_plan, unmarshall_rebase_plan,
replay_snapshot, generate_simple_plan,
generate_transpose_plan, rebase_plan_exists,
- REBASE_PLAN_FILENAME, REBASE_CURRENT_REVID_FILENAME,
- read_rebase_plan, remove_rebase_plan,
- read_active_rebase_revid, write_active_rebase_revid,
- write_rebase_plan, MapTree)
+ rebase_todo, REBASE_PLAN_FILENAME,
+ REBASE_CURRENT_REVID_FILENAME, read_rebase_plan,
+ remove_rebase_plan, read_active_rebase_revid,
+ write_active_rebase_revid, write_rebase_plan, MapTree)
class RebasePlanReadWriterTests(TestCase):
@@ -232,3 +232,26 @@
wt = self.make_branch_and_tree('.')
write_active_rebase_revid(wt, None)
self.assertIs(None, read_active_rebase_revid(wt))
+
+class RebaseTodoTests(TestCase):
+ def test_done(self):
+ class Repository:
+ def has_revision(self, revid):
+ return revid == "bloe"
+ self.assertEquals([],
+ list(rebase_todo(Repository(), { "bla": ("bloe", [])})))
+
+ def test_notstarted(self):
+ class Repository:
+ def has_revision(self, revid):
+ return False
+ self.assertEquals(["bla"],
+ list(rebase_todo(Repository(), { "bla": ("bloe", [])})))
+
+ def test_halfway(self):
+ class Repository:
+ def has_revision(self, revid):
+ return revid == "bloe"
+ self.assertEquals(["ha"],
+ list(rebase_todo(Repository(), { "bla": ("bloe", []),
+ "ha": ("hee", [])})))
More information about the bazaar-commits
mailing list