Rev 1812: Fix more tests. in file:///data/jelmer/bzr-svn/trunk/
Jelmer Vernooij
jelmer at samba.org
Fri Sep 5 21:24:26 BST 2008
At file:///data/jelmer/bzr-svn/trunk/
------------------------------------------------------------
revno: 1812
revision-id: jelmer at samba.org-20080905202424-sly3zcrjqau7srak
parent: jelmer at samba.org-20080905171211-0mw7mckfevm2haad
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Fri 2008-09-05 22:24:24 +0200
message:
Fix more tests.
modified:
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
revmeta.py revmeta.py-20080901215045-n8a6arqybs9ez5hl-1
tests/mapping3/__init__.py __init__.py-20080831152358-oy04n53cpnh64aj6-1
tests/mapping_implementations/test_repository.py test_repository.py-20080902013845-ity7d1ymye69sobm-2
=== modified file 'fetch.py'
--- a/fetch.py 2008-09-02 23:46:26 +0000
+++ b/fetch.py 2008-09-05 20:24:24 +0000
@@ -389,32 +389,21 @@
assert prev_inventory.root is None or self.inventory.root.revision == prev_inventory.root.revision
super(RevisionBuildEditor, self).__init__(revmeta, mapping)
- def _get_revision(self, revid):
- """Creates the revision object.
-
- :param revid: Revision id of the revision to create.
- """
- rev = self.revmeta.get_revision(self.mapping)
-
- # Only fetch if it's cheap
- if self.source.transport.has_capability("log-revprops"):
- signature = self.revmeta.get_signature()
- else:
- signature = None
-
- return (rev, signature)
-
def _finish_commit(self):
assert len(self._premature_deletes) == 0
- (rev, signature) = self._get_revision(self.revid)
+ rev = self.revmeta.get_revision(self.mapping)
self.inventory.revision_id = self.revid
# Escaping the commit message is really the task of the serialiser
rev.message = _escape_commit_message(rev.message)
rev.inventory_sha1 = None
assert self.inventory.root.revision is not None
self.target.add_revision(self.revid, rev, self.inventory)
- if signature is not None:
- self.target.add_signature_text(self.revid, signature)
+
+ # Only fetch signature if it's cheap
+ if self.source.transport.has_capability("log-revprops"):
+ signature = self.revmeta.get_signature()
+ if signature is not None:
+ self.target.add_signature_text(self.revid, signature)
def _rename(self, file_id, parent_id, old_path, new_path, kind):
assert isinstance(new_path, unicode)
@@ -603,7 +592,7 @@
meta_map = {}
graph = self.source.get_graph()
available_revs = set()
- for revmeta in self.source._revmeta_provider.iter_all_changes(self.source.get_layout(), mapping=None, from_revnum=self.source.get_latest_revnum(), pb=pb):
+ for revmeta in self.source._revmeta_provider.iter_all_changes(self.source.get_layout(), mapping=mapping, from_revnum=self.source.get_latest_revnum(), pb=pb):
revid = revmeta.get_revision_id(mapping)
available_revs.add(revid)
meta_map[revid] = revmeta
=== modified file 'repository.py'
--- a/repository.py 2008-09-04 17:33:09 +0000
+++ b/repository.py 2008-09-05 20:24:24 +0000
@@ -190,15 +190,6 @@
self._cached_revnum = self.transport.get_latest_revnum()
return self._cached_revnum
- def start_write_group(self):
- pass
-
- def abort_write_group(self):
- pass
-
- def commit_write_group(self):
- pass
-
def item_keys_introduced_by(self, revision_ids, _files_pb=None):
fileids = {}
@@ -230,7 +221,6 @@
else:
revisions_with_signatures.add(rev_id)
yield ("signatures", None, revisions_with_signatures)
-
yield ("revisions", None, revision_ids)
@needs_read_lock
@@ -271,8 +261,7 @@
yield self.get_revision_delta(revision)
def get_revision_delta(self, revision):
- parentrevmeta = self.branch_prev_location(revision.svn_meta.branch_path, revision.svn_meta.revnum,
- revision.svn_mapping)
+ parentrevmeta = self._revmeta_provider.branch_prev_location(revision.svn_meta, revision.svn_mapping)
from bzrlib.plugins.svn.fetch import TreeDeltaBuildEditor
if parentrevmeta is None:
parentfileidmap = {}
@@ -417,20 +406,6 @@
return SvnRevisionTree(self, revision_id)
- def branch_prev_location(self, path, revnum, mapping):
- assert isinstance(path, str)
- assert isinstance(revnum, int)
-
- iterator = self._revmeta_provider.iter_reverse_branch_changes(path, revnum, to_revnum=0,
- mapping=mapping, limit=2)
- revmeta = iterator.next()
- assert revmeta.branch_path == path
- assert revmeta.revnum == revnum
- try:
- return iterator.next()
- except StopIteration:
- return None
-
def get_parent_map(self, revids):
parent_map = {}
for revision_id in revids:
=== modified file 'revmeta.py'
--- a/revmeta.py 2008-09-04 17:33:09 +0000
+++ b/revmeta.py 2008-09-05 20:24:24 +0000
@@ -32,8 +32,7 @@
:param from_rev: Revision to look up children in.
"""
for c in find_children(from_bp, from_rev):
- path = c.replace(from_bp, bp+"/", 1).replace("//", "/")
- paths[path] = ('A', None, -1)
+ paths[changes.rebase_path(c, from_bp, bp)] = ('A', None, -1)
return paths
@@ -54,6 +53,12 @@
self.metabranch = metabranch
self.uuid = uuid
+ def __eq__(self, other):
+ return (type(self) == type(other) and
+ self.branch_path == other.branch_path and
+ self.revnum == other.revnum and
+ self.uuid == other.uuid)
+
def __repr__(self):
return "<RevisionMetadata for revision %d in repository %s>" % (self.revnum, repr(self.uuid))
@@ -93,6 +98,10 @@
fileprops = self.get_fileprops()
return isinstance(fileprops, dict) or fileprops.is_loaded
+ def knows_revprops(self):
+ revprops = self.get_revprops()
+ return isinstance(revprops, dict) or revprops.is_loaded
+
def get_previous_fileprops(self):
prev = changes.find_prev_location(self.get_paths(), self.branch_path, self.revnum)
if prev is None:
@@ -109,6 +118,8 @@
return self._changed_fileprops
def get_lhs_parent_revmeta(self, mapping):
+ assert (mapping.is_branch(self.branch_path) or
+ mapping.is_tag(self.branch_path)), "%s not valid in %r" % (self.branch_path, mapping)
if self.metabranch is not None and self.metabranch.mapping == mapping:
# Perhaps the metabranch already has the parent?
parentrevmeta = self.metabranch.get_lhs_parent(self)
@@ -116,7 +127,7 @@
return parentrevmeta
# FIXME: Don't use self.repository.branch_prev_location,
# since it browses history
- return self.repository.branch_prev_location(self.branch_path, self.revnum, mapping)
+ return self.repository._revmeta_provider.branch_prev_location(self, mapping)
def get_lhs_parent(self, mapping):
# Sometimes we can retrieve the lhs parent from the revprop data
@@ -299,7 +310,7 @@
this revmeta.
"""
i = self._revs.index(revmeta)
- for desc in self._revs[i+1:]:
+ for desc in self._revs[:i]:
if desc.knows_fileprops():
return (desc.estimate_bzr_fileprop_ancestors() > 0)
# assume the worst
@@ -406,6 +417,19 @@
def get_mainline(self, branch_path, revnum, mapping, pb=None):
return list(self.iter_reverse_branch_changes(branch_path, revnum, to_revnum=0, mapping=mapping, pb=pb))
+ def branch_prev_location(self, revmeta, mapping):
+ iterator = self.iter_reverse_branch_changes(revmeta.branch_path, revmeta.revnum, to_revnum=0, mapping=mapping, limit=2)
+ firstrevmeta = iterator.next()
+ assert revmeta == firstrevmeta
+ try:
+ parentrevmeta = iterator.next()
+ if (not mapping.is_branch(parentrevmeta.branch_path) and
+ not mapping.is_tag(parentrevmeta.branch_path)):
+ return None
+ return parentrevmeta
+ except StopIteration:
+ return None
+
def iter_reverse_branch_changes(self, branch_path, from_revnum, to_revnum,
mapping=None, pb=None, limit=0):
"""Return all the changes that happened in a branch
@@ -413,6 +437,7 @@
:return: iterator that returns RevisionMetadata objects.
"""
+ assert mapping is None or mapping.is_branch(branch_path) or mapping.is_tag(branch_path)
history_iter = self.iter_changes(branch_path, from_revnum, to_revnum,
mapping, pb=pb, limit=limit)
metabranch = RevisionMetadataBranch(mapping)
=== modified file 'tests/mapping3/__init__.py'
--- a/tests/mapping3/__init__.py 2008-09-05 17:12:11 +0000
+++ b/tests/mapping3/__init__.py 2008-09-05 20:24:24 +0000
@@ -18,6 +18,7 @@
from bzrlib.errors import NoSuchRevision
from bzrlib.repository import Repository
from bzrlib.tests import TestCase
+from bzrlib.trace import mutter
from bzrlib.plugins.svn import format
from bzrlib.plugins.svn.layout import TrunkLayout, RootLayout
@@ -127,8 +128,6 @@
repos = Repository.open(self.repos_url)
mapping = repos.get_mapping()
- if not mapping.roundtripping:
- raise TestNotApplicable()
revid = repos.generate_revision_id(1, "", mapping)
self.assertEquals(
mapping.revision_id_foreign_to_bzr((repos.uuid, 1, "")),
@@ -306,6 +305,7 @@
dc.close()
oldrepos = Repository.open(self.repos_url)
+ oldrepos.set_layout(RootLayout())
dir = BzrDir.create("f", format.get_rich_root_format())
newrepos = dir.create_repository()
oldrepos.copy_content_into(newrepos)
=== modified file 'tests/mapping_implementations/test_repository.py'
--- a/tests/mapping_implementations/test_repository.py 2008-09-05 17:12:11 +0000
+++ b/tests/mapping_implementations/test_repository.py 2008-09-05 20:24:24 +0000
@@ -75,7 +75,10 @@
raise TestNotApplicable
ret = list(repos._revmeta_provider.iter_changes('bla/bar', 2, 0, repos.get_mapping()))
self.assertEquals(1, len(ret))
- self.assertEquals("bla/bar", ret[0][0])
+ if repos.get_mapping().is_branch("foo/bar"):
+ self.assertEquals("foo/bar", ret[0][0])
+ else:
+ self.assertEquals("bla/bar", ret[0][0])
def test_set_make_working_trees(self):
repos_url = self.make_repository("a")
@@ -174,8 +177,15 @@
repos.set_layout(CustomLayout(["pygments"]))
except svn_errors.LayoutUnusable:
raise TestNotApplicable
- changes = repos._revmeta_provider.iter_reverse_branch_changes("pygments", 2, 0)
- self.assertEquals([('pygments',
+ changes = repos._revmeta_provider.iter_reverse_branch_changes("pygments", 2, 0, mapping=repos.get_mapping())
+ if repos.get_mapping().is_branch("pykleur"):
+ self.assertEquals([('pygments',
+ {'pygments': ('A', 'pykleur', 1)},
+ 2),
+ ('pykleur', {'pykleur': ('A', None, -1), 'pykleur/bla': ('A', None, -1)}, 1)],
+ [(l.branch_path, l.get_paths(), l.revnum) for l in changes])
+ else:
+ self.assertEquals([('pygments',
{'pygments/bla': ('A', None, -1), 'pygments': ('A', None, -1)},
2)],
[(l.branch_path, l.get_paths(), l.revnum) for l in changes])
More information about the bazaar-commits
mailing list