Rev 637: Fix some tests. in file:///data/jelmer/bzr-svn/noschemes/

Jelmer Vernooij jelmer at samba.org
Sun Feb 3 14:41:07 GMT 2008


At file:///data/jelmer/bzr-svn/noschemes/

------------------------------------------------------------
revno: 637
revision-id:jelmer at samba.org-20080203144105-gwb7gr0y3lgvakuc
parent: jelmer at samba.org-20080203030833-2zzst4srn6utbxf2
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: noschemes
timestamp: Sun 2008-02-03 15:41:05 +0100
message:
  Fix some tests.
modified:
  fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
  fileids.py                     fileids.py-20060714013623-u5iiyqqnko11grcf-1
  mapping.py                     mapping.py-20080128201303-6cp01phc0dmc0kiv-1
  tests/test_branch.py           test_branch.py-20060508162215-74ffeb5d608f8e20
  tests/test_fetch.py            test_fetch.py-20070624210302-luvgwjmlfysk5qeq-1
  tests/test_fileids.py          test_fileids.py-20060622131341-19gyrlgqy8yl2od5-1
  tests/test_mapping.py          test_mapping.py-20080201131338-0zd86eznn4bojtee-1
  tests/test_repos.py            test_repos.py-20060508151940-ddc49a59257ca712
  tests/test_revids.py           test_revids.py-20070516230044-d7x872cqi7xb4eow-1
  tests/test_upgrade.py          test_upgrade.py-20070106170128-64zt3eqggg4tng1c-1
  tests/test_workingtree.py      test_workingtree.py-20060622191524-0di7bc3q1ckdbybb-1
=== modified file 'fetch.py'
--- a/fetch.py	2008-02-03 03:08:33 +0000
+++ b/fetch.py	2008-02-03 14:41:05 +0000
@@ -29,7 +29,6 @@
 import svn.core
 
 from bzrlib.plugins.svn.errors import InvalidFileName
-from fileids import generate_file_id
 from mapping import (SVN_PROP_BZR_ANCESTRY, SVN_PROP_BZR_MERGE, 
                      SVN_PROP_BZR_PREFIX, SVN_PROP_BZR_REVISION_INFO, 
                      SVN_PROP_BZR_BRANCHING_SCHEME, SVN_PROP_BZR_REVISION_ID,
@@ -128,7 +127,7 @@
         if self.old_inventory.root is None:
             # First time the root is set
             old_file_id = None
-            file_id = generate_file_id(self.source, self.revid, u"")
+            file_id = self.mapping.generate_file_id(self.source.uuid, self.revnum, self.branch_path, u"")
             self.dir_baserev[file_id] = []
         else:
             assert self.old_inventory.root.revision is not None
@@ -165,7 +164,7 @@
         assert isinstance(parent_id, str)
         if self.id_map.has_key(new_path):
             return self.id_map[new_path]
-        return generate_file_id(self.source, self.revid, new_path)
+        return self.mapping.generate_file_id(self.source.uuid, self.revnum, self.branch_path, new_path)
 
     def _rename(self, file_id, parent_id, path):
         assert isinstance(path, unicode)

=== modified file 'fileids.py'
--- a/fileids.py	2008-02-03 03:08:33 +0000
+++ b/fileids.py	2008-02-03 14:41:05 +0000
@@ -25,25 +25,6 @@
 
 from mapping import escape_svn_path
 
-def generate_file_id(repos, revid, inv_path):
-    """Generate a file id for a path created in a specific revision.
-
-    :note: This should not necessarily be the revnum in which the 
-        node first appeared in Subversion, but the revnum in which 
-        bzr-svn required a new file identity to be created.
-
-    :param repos: Repository object.
-    :param revid: bzr-svn revision id for the revision in which the path first
-                  appeared.
-    :param inv_path: Inventory path in the specified revision.
-    :return: A file id
-    """
-    assert isinstance(revid, str)
-    assert isinstance(inv_path, unicode)
-    (branch, revnum, mapping) = repos.lookup_revision_id(revid)
-    return mapping.generate_file_id(repos.uuid, revnum, branch, inv_path)
-
-
 def get_local_changes(paths, mapping, generate_revid, get_children=None):
     new_paths = {}
     for p in sorted(paths.keys()):
@@ -122,10 +103,8 @@
         else:
             get_children = None
 
-        revid = self.repos.generate_revision_id(revnum, branch, mapping)
-
         def new_file_id(x):
-            return generate_file_id(self.repos, revid, x)
+            return mapping.generate_file_id(self.repos.uuid, revnum, branch, x)
          
         idmap = self._apply_changes(new_file_id, changes, get_children)
         idmap.update(renames)
@@ -141,10 +120,13 @@
             return {"": (mapping.generate_file_id(uuid, revnum, branch, u""), 
               self.repos.generate_revision_id(revnum, branch, mapping))}
 
+        quickrevidmap = {}
+
         # No history -> empty map
         for (bp, paths, rev) in self.repos.follow_branch_history(branch, 
                                              revnum, mapping):
             revid = self.repos.generate_revision_id(rev, bp, mapping)
+            quickrevidmap[revid] = (rev, bp)
             try:
                 map = self.load(revid)
                 # found the nearest cached map
@@ -178,14 +160,15 @@
                 pb.update('generating file id map', i, len(todo))
 
                 def find_children(path, revid):
-                    (bp, revnum, mapping) = self.repos.lookup_revision_id(revid)
+                    (revnum, bp) = quickrevidmap[revid]
                     for p in log_find_children(bp+"/"+path, revnum):
                         yield mapping.unprefix(bp, p)
 
                 parent_revs = next_parent_revs
 
                 def new_file_id(x):
-                    return generate_file_id(self.repos, revid, x)
+                    (revnum, branch) = quickrevidmap[revid]
+                    return mapping.generate_file_id(self.repos.uuid, revnum, branch, x)
                 
                 revmap = self._apply_changes(new_file_id, changes, find_children)
                 revmap.update(renames_cb(revid))

=== modified file 'mapping.py'
--- a/mapping.py	2008-02-03 03:08:33 +0000
+++ b/mapping.py	2008-02-03 14:41:05 +0000
@@ -21,7 +21,7 @@
 
 import calendar
 import errors
-from scheme import BranchingScheme
+from scheme import BranchingScheme, guess_scheme_from_branch_path
 import sha
 import svn
 import time
@@ -374,6 +374,9 @@
     def generate_revision_id(self, uuid, revnum, path):
         return "svn-v1:%d@%s-%s" % (revnum, uuid, escape_svn_path(path))
 
+    def __eq__(self, other):
+        return type(self) == type(other)
+
 
 class BzrSvnMappingv2(BzrSvnMapping):
     """The second version of the mappings as used in the 0.3.x series.
@@ -394,6 +397,9 @@
     def generate_revision_id(self, uuid, revnum, path):
         return "svn-v2:%d@%s-%s" % (revnum, uuid, escape_svn_path(path))
 
+    def __eq__(self, other):
+        return type(self) == type(other)
+
 
 def parse_fileid_property(text):
     ret = {}
@@ -442,7 +448,7 @@
         # Some older versions of bzr-svn 0.4 did not always set a branching
         # scheme but set "undefined" instead.
         if scheme == "undefined":
-            scheme = BranchingScheme.guess_scheme_from_branch_path(branch_path)
+            scheme = guess_scheme_from_branch_path(branch_path)
         else:
             scheme = BranchingScheme.find_scheme(scheme)
 
@@ -621,6 +627,9 @@
         assert branch_path == bp
         return np
 
+    def __eq__(self, other):
+        return type(self) == type(other) and self.scheme == other.scheme
+
 
 class BzrSvnMappingv4:
     @staticmethod
@@ -695,6 +704,9 @@
     def is_tag(self, tag_path):
         return True
 
+    def __eq__(self, other):
+        return type(self) == type(other)
+
 
 class BzrSvnMappingHybrid:
     @staticmethod

=== modified file 'tests/test_branch.py'
--- a/tests/test_branch.py	2008-01-28 22:52:09 +0000
+++ b/tests/test_branch.py	2008-02-03 14:41:05 +0000
@@ -27,7 +27,7 @@
 
 from branch import FakeControlFiles, SvnBranchFormat
 from convert import load_dumpfile
-from mapping import default_mapping, MAPPING_VERSION, SVN_PROP_BZR_REVISION_ID
+from mapping import MAPPING_VERSION, SVN_PROP_BZR_REVISION_ID
 from tests import TestCaseWithSubversionRepository
 
 class WorkingSubversionBranch(TestCaseWithSubversionRepository):
@@ -486,18 +486,18 @@
 
         newbranch = newdir.open_branch()
 
+        oldbranch = Branch.open(url)
+
         uuid = "6f95bc5c-e18d-4021-aca8-49ed51dbcb75"
         newbranch.lock_read()
-        tree = newbranch.repository.revision_tree(
-                default_mapping.generate_revision_id(uuid, 7, "branches/foobranch", 
-                "trunk0"))
+        tree = newbranch.repository.revision_tree(oldbranch.generate_revision_id(7))
 
         weave = newbranch.repository.weave_store.get_weave(
             tree.inventory.path2id("hosts"),
             newbranch.repository.get_transaction())
         self.assertEqual(set([
-            default_mapping.generate_revision_id(uuid, 6, "branches/foobranch", "trunk0"),
-            default_mapping.generate_revision_id(uuid, 7, "branches/foobranch", "trunk0")]),
+            oldbranch.generate_revision_id(6),
+            oldbranch.generate_revision_id(7)]),
                           set(weave.versions()))
         newbranch.unlock()
  
@@ -535,10 +535,11 @@
         newdir = olddir.sprout("new")
 
         newbranch = newdir.open_branch()
+        oldbranch = olddir.open_branch()
 
         uuid = olddir.find_repository().uuid
         tree = newbranch.repository.revision_tree(
-             default_mapping.generate_revision_id(uuid, 6, "branches/foobranch", "trunk0"))
+             oldbranch.generate_revision_id(6))
         transaction = newbranch.repository.get_transaction()
         newbranch.repository.lock_read()
         weave = newbranch.repository.weave_store.get_weave(
@@ -547,7 +548,7 @@
             default_mapping.generate_revision_id(uuid, 1, "trunk", "trunk0"),
             default_mapping.generate_revision_id(uuid, 2, "trunk", "trunk0"),
             default_mapping.generate_revision_id(uuid, 3, "trunk", "trunk0"),
-            default_mapping.generate_revision_id(uuid, 6, "branches/foobranch", "trunk0")]),
+            oldbranch.generate_revision_id(6)]),
                           set(weave.versions()))
         newbranch.repository.unlock()
 

=== modified file 'tests/test_fetch.py'
--- a/tests/test_fetch.py	2008-02-01 16:33:57 +0000
+++ b/tests/test_fetch.py	2008-02-03 14:41:05 +0000
@@ -27,7 +27,6 @@
 
 from convert import load_dumpfile
 from bzrlib.plugins.svn.errors import InvalidFileName
-from fileids import generate_file_id
 import format
 from mapping import default_mapping
 import remote

=== modified file 'tests/test_fileids.py'
--- a/tests/test_fileids.py	2008-01-31 23:04:12 +0000
+++ b/tests/test_fileids.py	2008-02-03 14:41:05 +0000
@@ -23,7 +23,7 @@
 
 import sha
 
-from fileids import SimpleFileIdMap, generate_file_id
+from fileids import SimpleFileIdMap
 from mapping import default_mapping
 from scheme import TrunkBranchingScheme
 from tests import TestCaseWithSubversionRepository
@@ -162,39 +162,40 @@
     def setUp(self):
         super(TestCase, self).setUp()
         self.repos = MockRepo()
+        self.mapping = default_mapping
 
     def test_generate_file_id_root(self):
-        self.assertEqual("2 at uuid:bp:", generate_file_id(self.repos, default_mapping.generate_revision_id("uuid", 2, "bp", "bla"), u""))
+        self.assertEqual("2 at uuid:bp:", generate_file_id(self.repos, self.mapping.generate_revision_id("uuid", 2, "bp", "bla"), u""))
 
     def test_generate_file_id_path(self):
         self.assertEqual("2 at uuid:bp:mypath", 
-                generate_file_id(self.repos, default_mapping.generate_revision_id("uuid", 2, "bp", "bla"), u"mypath"))
+                generate_file_id(self.repos, self.mapping.generate_revision_id("uuid", 2, "bp", "bla"), u"mypath"))
 
     def test_generate_file_id_long(self):
         dir = "this/is/a" + ("/very"*40) + "/long/path/"
         self.assertEqual("2 at uuid:bp;" + sha1(dir+"filename"), 
-                generate_file_id(self.repos, default_mapping.generate_revision_id("uuid", 2, "bp", "bla"), dir+u"filename"))
+                generate_file_id(self.repos, self.mapping.generate_revision_id("uuid", 2, "bp", "bla"), dir+u"filename"))
 
     def test_generate_file_id_long_nordic(self):
         dir = "this/is/a" + ("/very"*40) + "/long/path/"
         self.assertEqual("2 at uuid:bp;" + sha1((dir+u"filename\x2c\x8a").encode('utf-8')), 
-                generate_file_id(self.repos, default_mapping.generate_revision_id("uuid", 2, "bp", "bla"), dir+u"filename\x2c\x8a"))
+                generate_file_id(self.repos, self.mapping.generate_revision_id("uuid", 2, "bp", "bla"), dir+u"filename\x2c\x8a"))
 
     def test_generate_file_id_special_char(self):
         self.assertEqual("2 at uuid:bp:mypath%2C%C2%8A",
-                         generate_file_id(self.repos, default_mapping.generate_revision_id("uuid", 2, "bp","bla"), u"mypath\x2c\x8a"))
+                         generate_file_id(self.repos, self.mapping.generate_revision_id("uuid", 2, "bp","bla"), u"mypath\x2c\x8a"))
 
     def test_generate_svn_file_id(self):
         self.assertEqual("2 at uuid:bp:path", 
-                default_mapping.generate_file_id("uuid", 2, "bp", u"path"))
+                self.mapping.generate_file_id("uuid", 2, "bp", u"path"))
 
     def test_generate_svn_file_id_nordic(self):
         self.assertEqual("2 at uuid:bp:%C3%A6%C3%B8%C3%A5", 
-                default_mapping.generate_file_id("uuid", 2, "bp", u"\xe6\xf8\xe5"))
+                self.mapping.generate_file_id("uuid", 2, "bp", u"\xe6\xf8\xe5"))
 
     def test_generate_svn_file_id_nordic_branch(self):
         self.assertEqual("2 at uuid:%C3%A6:%C3%A6%C3%B8%C3%A5", 
-                default_mapping.generate_file_id("uuid", 2, u"\xe6".encode('utf-8'), u"\xe6\xf8\xe5"))
+                self.mapping.generate_file_id("uuid", 2, u"\xe6".encode('utf-8'), u"\xe6\xf8\xe5"))
 
 
 class TestFileMapping(TestCase):

=== modified file 'tests/test_mapping.py'
--- a/tests/test_mapping.py	2008-02-03 03:08:33 +0000
+++ b/tests/test_mapping.py	2008-02-03 14:41:05 +0000
@@ -165,6 +165,15 @@
         scheme = NoBranchingScheme()
         self.assertEquals((None, None), self.mapping.get_revision_id({}, dict().get, scheme))
 
+    def test_parse_revision_id_unknown(self):
+        self.assertRaises(InvalidRevisionId, 
+                lambda: self.mapping.parse_revision_id("bla"))
+
+    def test_parse_revision_id(self):
+        self.assertEquals(("myuuid", "bla", 5, "foobar"), 
+            self.mapping.parse_revision_id(
+                self.mapping.generate_revision_id("myuuid", 5, "bla", "foobar")))
+
 
 class Mappingv1TestAdapter(MappingTestAdapter,TestCase):
     def setUp(self):
@@ -182,8 +191,33 @@
 
     def test_revid_svk_map(self):
         self.assertEqual("auuid:/:6", 
-              self.mapping._revision_id_to_svk_feature("svn-v%d-undefined:auuid::6" % MAPPING_VERSION))
-
+              self.mapping._revision_id_to_svk_feature("svn-v3-undefined:auuid::6"))
+
+    def test_generate_revid(self):
+        self.assertEqual("svn-v3-undefined:myuuid:branch:5", 
+                         default_mapping.generate_revision_id("myuuid", 5, "branch", "undefined"))
+
+    def test_generate_revid_nested(self):
+        self.assertEqual("svn-v3-undefined:myuuid:branch%2Fpath:5", 
+                  default_mapping.generate_revision_id("myuuid", 5, "branch/path", "undefined"))
+
+    def test_generate_revid_special_char(self):
+        self.assertEqual("svn-v3-undefined:myuuid:branch%2C:5", 
+             default_mapping.generate_revision_id("myuuid", 5, "branch\x2c", "undefined"))
+
+    def test_generate_revid_nordic(self):
+        self.assertEqual("svn-v3-undefined:myuuid:branch%C3%A6:5", 
+             default_mapping.generate_revision_id("myuuid", 5, u"branch\xe6".encode("utf-8"), "undefined"))
+
+    def test_parse_revid_simple(self):
+        self.assertEqual(("uuid", "", 4, None),
+                         default_mapping.parse_revision_id(
+                             "svn-v3-undefined:uuid::4"))
+
+    def test_parse_revid_nested(self):
+        self.assertEqual(("uuid", "bp/data", 4, None),
+                         default_mapping.parse_revision_id(
+                     "svn-v3-undefined:uuid:bp%2Fdata:4"))
 
 #class Mappingv4TestAdapter(MappingTestAdapter,TestCase):
 #    def setUp(self):

=== modified file 'tests/test_repos.py'
--- a/tests/test_repos.py	2008-02-03 03:08:33 +0000
+++ b/tests/test_repos.py	2008-02-03 14:41:05 +0000
@@ -33,7 +33,6 @@
 
 import svn.fs
 
-from fileids import generate_file_id
 import format
 from mapping import (default_mapping, escape_svn_path, unescape_svn_path, 
                      SVN_PROP_BZR_REVISION_ID, SVN_PROP_BZR_BRANCHING_SCHEME,

=== modified file 'tests/test_revids.py'
--- a/tests/test_revids.py	2008-02-03 03:08:33 +0000
+++ b/tests/test_revids.py	2008-02-03 14:41:05 +0000
@@ -18,7 +18,7 @@
 from bzrlib.repository import Repository
 from bzrlib.tests import TestCase
 
-from mapping import default_mapping, MAPPING_VERSION
+from mapping import MAPPING_VERSION
 from revids import RevidMap
 from tests import TestCaseWithSubversionRepository
 
@@ -88,42 +88,3 @@
                 revidmap.lookup_branch_revnum(42, "mypath", "brainslug"))
 
 
-class TestParseRevisionId(TestCase):
-    def test_parse_revision_id_unknown(self):
-        self.assertRaises(InvalidRevisionId, 
-                lambda: default_mapping.parse_revision_id("bla"))
-
-    def test_parse_revision_id(self):
-        self.assertEquals(("myuuid", "bla", 5, "foobar"), 
-            default_mapping.parse_revision_id(
-                default_mapping.generate_revision_id("myuuid", 5, "bla", "foobar")))
-
-
-class RevisionIdMappingTest(TestCase):
-    def test_generate_revid(self):
-        self.assertEqual("svn-v%d-undefined:myuuid:branch:5" % MAPPING_VERSION, 
-                         default_mapping.generate_revision_id("myuuid", 5, "branch", "undefined"))
-
-    def test_generate_revid_nested(self):
-        self.assertEqual("svn-v%d-undefined:myuuid:branch%%2Fpath:5" % MAPPING_VERSION, 
-                  default_mapping.generate_revision_id("myuuid", 5, "branch/path", "undefined"))
-
-    def test_generate_revid_special_char(self):
-        self.assertEqual("svn-v%d-undefined:myuuid:branch%%2C:5" % MAPPING_VERSION, 
-             default_mapping.generate_revision_id("myuuid", 5, "branch\x2c", "undefined"))
-
-    def test_generate_revid_nordic(self):
-        self.assertEqual("svn-v%d-undefined:myuuid:branch%%C3%%A6:5" % MAPPING_VERSION, 
-             default_mapping.generate_revision_id("myuuid", 5, u"branch\xe6".encode("utf-8"), "undefined"))
-
-    def test_parse_revid_simple(self):
-        self.assertEqual(("uuid", "", 4, None),
-                         default_mapping.parse_revision_id(
-                             "svn-v%d-undefined:uuid::4" % MAPPING_VERSION))
-
-    def test_parse_revid_nested(self):
-        self.assertEqual(("uuid", "bp/data", 4, None),
-                         default_mapping.parse_revision_id(
-                     "svn-v%d-undefined:uuid:bp%%2Fdata:4" % MAPPING_VERSION))
-
-

=== modified file 'tests/test_upgrade.py'
--- a/tests/test_upgrade.py	2008-02-01 00:27:35 +0000
+++ b/tests/test_upgrade.py	2008-02-03 14:41:05 +0000
@@ -23,7 +23,9 @@
 
 from errors import RebaseNotPresent
 from format import get_rich_root_format
-from mapping import default_mapping, MAPPING_VERSION
+from mapping import (MAPPING_VERSION, BzrSvnMappingv3, BzrSvnMappingv2, 
+                     BzrSvnMappingv1)
+from scheme import TrunkBranchingScheme
 from tests import TestCaseWithSubversionRepository
 from upgrade import (upgrade_repository, upgrade_branch,
                      upgrade_workingtree, UpgradeChangesContent, 
@@ -38,19 +40,19 @@
 
 class ParserTests(TestCase):
     def test_current(self):
-        self.assertEqual(("uuid", "trunk", 1, "trunk0", 'v3'), 
+        self.assertEqual(("uuid", "trunk", 1, BzrSvnMappingv3(TrunkBranchingScheme())), 
                 parse_legacy_revision_id("svn-v3-trunk0:uuid:trunk:1"))
 
     def test_current_undefined(self):
-        self.assertEqual(("uuid", "trunk", 1, None, 'v3'), 
+        self.assertEqual(("uuid", "trunk", 1, BzrSvnMappingv3(TrunkBranchingScheme())), 
                 parse_legacy_revision_id("svn-v3-undefined:uuid:trunk:1"))
 
     def test_legacy2(self):
-        self.assertEqual(("uuid", "trunk", 1, None, 'v2'), 
+        self.assertEqual(("uuid", "trunk", 1, BzrSvnMappingv2()), 
                          parse_legacy_revision_id("svn-v2:1 at uuid-trunk"))
 
     def test_legacy(self):
-        self.assertEqual(("uuid", "trunk", 1, None, 'v1'), 
+        self.assertEqual(("uuid", "trunk", 1, BzrSvnMappingv1()), 
                          parse_legacy_revision_id("svn-v1:1 at uuid-trunk"))
 
     def test_except(self):
@@ -158,7 +160,7 @@
 
         tree = newrepos.revision_tree("customrev-svn%d-upgrade" % MAPPING_VERSION)
         self.assertEqual("specificid", tree.inventory.path2id("a"))
-        self.assertEqual(default_mapping.generate_file_id(oldrepos.uuid, 1, "", u"a"), 
+        self.assertEqual(oldrepos.get_mapping().generate_file_id(oldrepos.uuid, 1, "", u"a"), 
                          tree.inventory.path2id("b"))
 
     @skip_no_rebase

=== modified file 'tests/test_workingtree.py'
--- a/tests/test_workingtree.py	2008-02-02 14:48:35 +0000
+++ b/tests/test_workingtree.py	2008-02-03 14:41:05 +0000
@@ -30,7 +30,7 @@
 
 import os, sys
 
-from mapping import MAPPING_VERSION, default_mapping
+from mapping import MAPPING_VERSION
 from transport import svn_config
 from tests import TestCaseWithSubversionRepository
 
@@ -293,7 +293,7 @@
         self.assertEqual(wt.branch.generate_revision_id(0), 
                          wt.basis_tree().inventory.revision_id)
         inv = Inventory()
-        root_id = default_mapping.generate_file_id(wt.branch.repository.uuid, 0, "", u"")
+        root_id = wt.branch.repository.get_mapping().generate_file_id(wt.branch.repository.uuid, 0, "", u"")
         inv.revision_id = wt.branch.generate_revision_id(0)
         inv.add_path('', 'directory', root_id).revision = inv.revision_id
                               




More information about the bazaar-commits mailing list