Rev 838: Implement the unicode spec. in file:///data/jelmer/bzr-svn/0.4/
Jelmer Vernooij
jelmer at samba.org
Fri Jan 18 04:05:55 GMT 2008
At file:///data/jelmer/bzr-svn/0.4/
------------------------------------------------------------
revno: 838
revision-id:jelmer at samba.org-20080117231919-xc808a0zydd2fz9a
parent: jelmer at samba.org-20080117222815-sq2efbyz39ajmxck
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Fri 2008-01-18 00:19:19 +0100
message:
Implement the unicode spec.
modified:
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
fileids.py fileids.py-20060714013623-u5iiyqqnko11grcf-1
logwalker.py logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
revids.py revids.py-20070416220458-36vfa0730cchevp1-1
scheme.py scheme.py-20060516195850-95181aae6b272f9e
tests/test_fetch.py test_fetch.py-20070624210302-luvgwjmlfysk5qeq-1
tests/test_fileids.py test_fileids.py-20060622131341-19gyrlgqy8yl2od5-1
tests/test_repos.py test_repos.py-20060508151940-ddc49a59257ca712
tests/test_revids.py test_revids.py-20070516230044-d7x872cqi7xb4eow-1
tests/test_scheme.py test_scheme.py-20060621221855-va2xabhlxpmc9llx-1
tests/test_upgrade.py test_upgrade.py-20070106170128-64zt3eqggg4tng1c-1
tests/test_workingtree.py test_workingtree.py-20060622191524-0di7bc3q1ckdbybb-1
workingtree.py workingtree.py-20060306120941-b083cb0fdd4a69de
=== modified file 'fetch.py'
--- a/fetch.py 2007-12-22 21:27:52 +0000
+++ b/fetch.py 2008-01-17 23:19:19 +0000
@@ -148,7 +148,7 @@
def open_root(self, base_revnum, baton):
if self.old_inventory.root is None:
# First time the root is set
- file_id = generate_file_id(self.source, self.revid, "")
+ file_id = generate_file_id(self.source, self.revid, u"")
self.dir_baserev[file_id] = []
else:
assert self.old_inventory.root.revision is not None
=== modified file 'fileids.py'
--- a/fileids.py 2007-10-24 16:14:16 +0000
+++ b/fileids.py 2008-01-17 23:19:19 +0000
@@ -27,26 +27,45 @@
from revids import escape_svn_path
-def generate_svn_file_id(uuid, revnum, branch, path):
+def generate_svn_file_id(uuid, revnum, branch, inv_path):
"""Create a file id identifying a Subversion file.
:param uuid: UUID of the repository
- :param revnu: Revision number at which the file was introduced.
+ :param revnum: Revision number at which the file was introduced.
:param branch: Branch path of the branch in which the file was introduced.
- :param path: Original path of the file within the branch
+ :param inv_path: Original path of the file within the inventory
"""
- ret = "%d@%s:%s:%s" % (revnum, uuid, escape_svn_path(branch), escape_svn_path(path))
+ assert isinstance(uuid, str)
+ assert isinstance(revnum, int)
+ assert isinstance(branch, str)
+ assert isinstance(inv_path, unicode)
+ inv_path = inv_path.encode("utf-8")
+ ret = "%d@%s:%s:%s" % (revnum, uuid, escape_svn_path(branch), escape_svn_path(inv_path))
if len(ret) > 150:
ret = "%d@%s:%s;%s" % (revnum, uuid,
escape_svn_path(branch),
- sha.new(path.encode('utf-8')).hexdigest())
+ sha.new(inv_path).hexdigest())
assert isinstance(ret, str)
return osutils.safe_file_id(ret)
-def generate_file_id(repos, revid, 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, _) = repos.lookup_revision_id(revid)
- return generate_svn_file_id(repos.uuid, revnum, branch, path)
+ return generate_svn_file_id(repos.uuid, revnum, branch, inv_path)
def get_local_changes(paths, scheme, generate_revid, get_children=None):
@@ -143,7 +162,7 @@
next_parent_revs = []
if revnum == 0:
assert branch == ""
- return {"": (generate_svn_file_id(uuid, revnum, branch, ""),
+ return {"": (generate_svn_file_id(uuid, revnum, branch, u""),
self.repos.generate_revision_id(revnum, branch, str(scheme)))}
# No history -> empty map
@@ -165,7 +184,7 @@
if len(next_parent_revs) == 0:
if scheme.is_branch(""):
- map = {"": (generate_svn_file_id(uuid, 0, "", ""), NULL_REVISION)}
+ map = {u"": (generate_svn_file_id(uuid, 0, "", u""), NULL_REVISION)}
else:
map = {}
@@ -233,13 +252,15 @@
data = changes[p]
if data[0] in ('A', 'R'):
- map[p] = new_file_id(p)
+ inv_p = p.decode("utf-8")
+ map[inv_p] = new_file_id(inv_p)
if data[1] is not None:
- mutter('%r copied from %r:%s' % (p, data[1], data[2]))
+ mutter('%r copied from %r:%s' % (inv_p, data[1], data[2]))
if find_children is not None:
for c in find_children(data[1], data[2]):
- path = c.replace(data[1], p+"/", 1).replace("//", "/")
+ inv_c = c.decode("utf-8")
+ path = c.replace(data[1].decode("utf-8"), inv_p+"/", 1).replace(u"//", u"/")
map[path] = new_file_id(path)
mutter('added mapping %r -> %r' % (path, map[path]))
=== modified file 'logwalker.py'
--- a/logwalker.py 2007-12-15 19:23:21 +0000
+++ b/logwalker.py 2008-01-17 23:19:19 +0000
@@ -203,7 +203,7 @@
:param path: Path to check for changes
:param revnum: First revision to check
"""
- assert isinstance(path, basestring)
+ assert isinstance(path, str)
assert isinstance(revnum, int) and revnum >= 0
self.fetch_revisions(revnum)
=== modified file 'repository.py'
--- a/repository.py 2008-01-17 18:37:40 +0000
+++ b/repository.py 2008-01-17 23:19:19 +0000
@@ -232,6 +232,7 @@
:param revid: Revision id to convert.
:return: Matching SVK feature identifier.
"""
+ assert isinstance(revid, str)
(uuid, branch, revnum, _) = parse_svn_revision_id(revid)
# TODO: What about renamed revisions? Should use
# repository.lookup_revision_id here.
@@ -521,7 +522,7 @@
:return: Revision id of the left-hand-side parent or None if
this is the first revision
"""
- assert isinstance(path, basestring)
+ assert isinstance(path, str)
assert isinstance(revnum, int)
if not scheme.is_branch(path) and \
@@ -638,7 +639,7 @@
def get_revision(self, revision_id):
"""See Repository.get_revision."""
- if not revision_id or not isinstance(revision_id, basestring):
+ if not revision_id or not isinstance(revision_id, str):
raise InvalidRevisionId(revision_id=revision_id, branch=self)
(path, revnum, _) = self.lookup_revision_id(revision_id)
@@ -734,13 +735,14 @@
:return: Tuple with branch path, revision number and scheme.
"""
def get_scheme(name):
- assert isinstance(name, basestring)
+ assert isinstance(name, str)
return BranchingScheme.find_scheme(name)
# Try a simple parse
try:
(uuid, branch_path, revnum, schemen) = parse_svn_revision_id(revid)
assert isinstance(branch_path, str)
+ assert isinstance(schemen, str)
if uuid == self.uuid:
return (branch_path, revnum, get_scheme(schemen))
# If the UUID doesn't match, this may still be a valid revision
@@ -754,6 +756,7 @@
(branch_path, min_revnum, max_revnum, \
scheme) = self.revmap.lookup_revid(revid)
assert isinstance(branch_path, str)
+ assert isinstance(scheme, str)
# Entry already complete?
if min_revnum == max_revnum:
return (branch_path, min_revnum, get_scheme(scheme))
@@ -802,7 +805,7 @@
# Find the branch property between min_revnum and max_revnum that
# added revid
for (bp, rev) in self.follow_branch(branch_path, max_revnum,
- get_scheme(scheme)):
+ get_scheme(str(scheme))):
try:
(entry_revno, entry_revid) = parse_revid_property(
self.branchprop_list.get_property_diff(bp, rev,
=== modified file 'revids.py'
--- a/revids.py 2008-01-08 22:54:18 +0000
+++ b/revids.py 2008-01-17 23:19:19 +0000
@@ -34,8 +34,7 @@
:param x: Path
:return: Escaped path
"""
- if isinstance(x, unicode):
- x = x.encode("utf-8")
+ assert isinstance(x, str)
return urllib.quote(x, "")
unescape_svn_path = urllib.unquote
@@ -49,7 +48,7 @@
"""
assert revid is not None
- assert isinstance(revid, basestring)
+ assert isinstance(revid, str)
if not revid.startswith(REVISION_ID_PREFIX):
raise InvalidRevisionId(revid, "")
@@ -78,7 +77,7 @@
:return: New revision id.
"""
assert isinstance(revnum, int)
- assert isinstance(path, basestring)
+ assert isinstance(path, str)
assert revnum >= 0
assert revnum > 0 or path == "", \
"Trying to generate revid for (%r,%r)" % (path, revnum)
@@ -138,11 +137,12 @@
:return: Tuple with path inside repository, minimum revision number, maximum revision number and
branching scheme.
"""
+ assert isinstance(revid, str)
ret = self.cachedb.execute(
"select path, min_revnum, max_revnum, scheme from revmap where revid='%s'" % revid).fetchone()
if ret is None:
raise NoSuchRevision(self, revid)
- return (str(ret[0]), ret[1], ret[2], ret[3])
+ return (ret[0].encode("utf-8"), int(ret[1]), int(ret[2]), ret[3].encode("utf-8"))
def lookup_branch_revnum(self, revnum, path, scheme):
"""Lookup a revision by revision number, branch path and branching scheme.
@@ -152,8 +152,8 @@
:param scheme: Branching scheme name
"""
assert isinstance(revnum, int)
- assert isinstance(path, basestring)
- assert isinstance(scheme, basestring)
+ assert isinstance(path, str)
+ assert isinstance(scheme, str)
revid = self.cachedb.execute(
"select revid from revmap where max_revnum = min_revnum and min_revnum='%s' and path='%s' and scheme='%s'" % (revnum, path, scheme)).fetchone()
if revid is not None:
@@ -162,8 +162,23 @@
def insert_revid(self, revid, branch, min_revnum, max_revnum, scheme,
dist_to_origin=None):
+ """Insert a revision id into the revision id cache.
+
+ :param revid: Revision id for which to insert metadata.
+ :param branch: Branch path at which the revision was seen
+ :param min_revnum: Minimum Subversion revision number in which the
+ revid was found
+ :param max_revnum: Maximum Subversion revision number in which the
+ revid was found
+ :param scheme: Name of the branching scheme with which the revision
+ was found
+ :param dist_to_origin: Optional distance to the origin of this branch.
+ """
assert revid is not None and revid != ""
- assert isinstance(scheme, basestring)
+ assert isinstance(scheme, str)
+ assert isinstance(branch, str)
+ assert isinstance(min_revnum, int) and isinstance(max_revnum, int)
+ assert dist_to_origin is None or isinstance(dist_to_origin, int)
cursor = self.cachedb.execute(
"update revmap set min_revnum = MAX(min_revnum,?), max_revnum = MIN(max_revnum, ?) WHERE revid=? AND path=? AND scheme=?",
(min_revnum, max_revnum, revid, branch, scheme))
@@ -177,6 +192,11 @@
(revid, dist_to_origin))
def lookup_dist_to_origin(self, revid):
+ """Lookup the number of lhs revisions between the revid and NULL_REVISIOn.
+ :param revid: Revision id of the revision for which to do the lookup.
+ :return: None if the distance is not known, or an integer.
+ """
+ assert isinstance(revid, str)
revno = self.cachedb.execute(
"select dist_to_origin from revno_cache where revid='%s'" % revid).fetchone()
if revno is not None and revno[0] is not None:
=== modified file 'scheme.py'
--- a/scheme.py 2007-10-29 12:46:23 +0000
+++ b/scheme.py 2008-01-17 23:19:19 +0000
@@ -129,7 +129,8 @@
:param branch_list: List of know branch locations.
"""
- if isinstance(branch_list, basestring):
+ assert isinstance(branch_list, list) or isinstance(branch_list, str)
+ if isinstance(branch_list, str):
branch_list = bz2.decompress(urlsafe_b64decode(branch_list.encode("ascii").replace(".", "="))).splitlines()
self.branch_list = [p.strip("/") for p in branch_list]
self.split_branch_list = [p.split("/") for p in self.branch_list]
=== modified file 'tests/test_fetch.py'
--- a/tests/test_fetch.py 2008-01-08 19:02:26 +0000
+++ b/tests/test_fetch.py 2008-01-17 23:19:19 +0000
@@ -1289,7 +1289,7 @@
tree = repos.revision_tree(
repos.generate_revision_id(3, "branches/foobranch", "trunk0"))
- self.assertEqual(generate_svn_file_id(repos.uuid, 1, "trunk", ""), tree.inventory.root.file_id)
+ self.assertEqual(generate_svn_file_id(repos.uuid, 1, "trunk", u""), tree.inventory.root.file_id)
def test_fetch_odd(self):
repos_url = self.make_client('d', 'dc')
=== modified file 'tests/test_fileids.py'
--- a/tests/test_fileids.py 2007-09-23 23:48:30 +0000
+++ b/tests/test_fileids.py 2008-01-17 23:19:19 +0000
@@ -167,33 +167,29 @@
self.repos = MockRepo()
def test_generate_file_id_root(self):
- self.assertEqual("2 at uuid:bp:", generate_file_id(self.repos, generate_svn_revision_id("uuid", 2, "bp", "bla"), ""))
+ self.assertEqual("2 at uuid:bp:", generate_file_id(self.repos, generate_svn_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, generate_svn_revision_id("uuid", 2, "bp", "bla"), "mypath"))
+ generate_file_id(self.repos, generate_svn_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, generate_svn_revision_id("uuid", 2, "bp", "bla"), dir+"filename"))
+ generate_file_id(self.repos, generate_svn_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, generate_svn_revision_id("uuid", 2, "bp", "bla"), dir+u"filename\x2c\x8a"))
- def test_generate_revid_special_char_ascii(self):
- self.assertEqual("2 at uuid:bp:mypath%2C%8A",
- generate_file_id(self.repos, generate_svn_revision_id("uuid", 2, "bp", "bla"), "mypath\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, generate_svn_revision_id("uuid", 2, "bp","bla"), u"mypath\x2c\x8a"))
def test_generate_svn_file_id(self):
self.assertEqual("2 at uuid:bp:path",
- generate_svn_file_id("uuid", 2, "bp", "path"))
+ generate_svn_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",
@@ -201,7 +197,7 @@
def test_generate_svn_file_id_nordic_branch(self):
self.assertEqual("2 at uuid:%C3%A6:%C3%A6%C3%B8%C3%A5",
- generate_svn_file_id("uuid", 2, u"\xe6", u"\xe6\xf8\xe5"))
+ generate_svn_file_id("uuid", 2, u"\xe6".encode('utf-8'), u"\xe6\xf8\xe5"))
class TestFileMapping(TestCase):
@@ -292,7 +288,7 @@
def test_empty(self):
scheme = TrunkBranchingScheme()
- self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 0, "", ""), self.repos.generate_revision_id(0, "", "trunk0"))},
+ self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 0, "", u""), self.repos.generate_revision_id(0, "", "trunk0"))},
self.repos.get_fileid_map(0, "", scheme))
def test_empty_trunk(self):
@@ -300,7 +296,7 @@
self.build_tree({"dc/trunk": None})
self.client_add("dc/trunk")
self.client_commit("dc", "Msg")
- self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 1, "trunk", ""), self.repos.generate_revision_id(1, "trunk", "trunk0"))},
+ self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 1, "trunk", u""), self.repos.generate_revision_id(1, "trunk", "trunk0"))},
self.repos.get_fileid_map(1, "trunk", scheme))
def test_change_parent(self):
@@ -311,7 +307,7 @@
self.build_tree({"dc/trunk/file": 'data'})
self.client_add("dc/trunk/file")
self.client_commit("dc", "Msg")
- self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 1, "trunk", ""), self.repos.generate_revision_id(2, "trunk", "trunk0")), "file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", "file"), self.repos.generate_revision_id(2, "trunk", "trunk0"))}, self.repos.get_fileid_map(2, "trunk", scheme))
+ self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 1, "trunk", u""), self.repos.generate_revision_id(2, "trunk", "trunk0")), "file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", u"file"), self.repos.generate_revision_id(2, "trunk", "trunk0"))}, self.repos.get_fileid_map(2, "trunk", scheme))
def test_change_updates(self):
scheme = TrunkBranchingScheme()
@@ -323,7 +319,7 @@
self.client_commit("dc", "Msg")
self.build_tree({"dc/trunk/file": 'otherdata'})
self.client_commit("dc", "Msg")
- self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 1, "trunk", ""), self.repos.generate_revision_id(3, "trunk", "trunk0")), "file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", "file"), self.repos.generate_revision_id(3, "trunk", "trunk0"))}, self.repos.get_fileid_map(3, "trunk", scheme))
+ self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 1, "trunk", u""), self.repos.generate_revision_id(3, "trunk", "trunk0")), "file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", u"file"), self.repos.generate_revision_id(3, "trunk", "trunk0"))}, self.repos.get_fileid_map(3, "trunk", scheme))
def test_sibling_unrelated(self):
scheme = TrunkBranchingScheme()
@@ -339,7 +335,7 @@
self.build_tree({"dc/trunk/file": 'otherdata'})
self.client_commit("dc", "Msg")
self.client_update("dc")
- self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 1, "trunk", ""), self.repos.generate_revision_id(3, "trunk", "trunk0")), "bar": (generate_svn_file_id(self.repos.uuid, 2, "trunk", "bar"), self.repos.generate_revision_id(2, "trunk", "trunk0")), "file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", "file"), self.repos.generate_revision_id(3, "trunk", "trunk0"))}, self.repos.get_fileid_map(3, "trunk", scheme))
+ self.assertEqual({"": (generate_svn_file_id(self.repos.uuid, 1, "trunk", u""), self.repos.generate_revision_id(3, "trunk", "trunk0")), "bar": (generate_svn_file_id(self.repos.uuid, 2, "trunk", u"bar"), self.repos.generate_revision_id(2, "trunk", "trunk0")), "file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", u"file"), self.repos.generate_revision_id(3, "trunk", "trunk0"))}, self.repos.get_fileid_map(3, "trunk", scheme))
def test_copy(self):
scheme = TrunkBranchingScheme()
@@ -352,8 +348,8 @@
self.client_copy("dc/trunk/file", "dc/trunk/bar")
self.client_commit("dc", "Msg")
self.assertEqual({
- "": (generate_svn_file_id(self.repos.uuid, 1, "trunk", ""), self.repos.generate_revision_id(3, "trunk", "trunk0")),
- "bar": (generate_svn_file_id(self.repos.uuid, 3, "trunk", "bar"), self.repos.generate_revision_id(3, "trunk", "trunk0")), "file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", "file"), self.repos.generate_revision_id(2, "trunk", "trunk0"))}, self.repos.get_fileid_map(3, "trunk", scheme))
+ "": (generate_svn_file_id(self.repos.uuid, 1, "trunk", u""), self.repos.generate_revision_id(3, "trunk", "trunk0")),
+ "bar": (generate_svn_file_id(self.repos.uuid, 3, "trunk", u"bar"), self.repos.generate_revision_id(3, "trunk", "trunk0")), "file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", u"file"), self.repos.generate_revision_id(2, "trunk", "trunk0"))}, self.repos.get_fileid_map(3, "trunk", scheme))
def test_copy_nested_modified(self):
scheme = TrunkBranchingScheme()
@@ -368,14 +364,14 @@
self.build_tree({"dc/trunk/bar/file": "data2"})
self.client_commit("dc", "Msg")
self.assertEqual({
- "": (generate_svn_file_id(self.repos.uuid, 1, "trunk", ""),
+ "": (generate_svn_file_id(self.repos.uuid, 1, "trunk", u""),
self.repos.generate_revision_id(3, "trunk", "trunk0")),
- "dir": (generate_svn_file_id(self.repos.uuid, 2, "trunk", "dir"),
+ "dir": (generate_svn_file_id(self.repos.uuid, 2, "trunk", u"dir"),
self.repos.generate_revision_id(2, "trunk", "trunk0")),
- "dir/file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", "dir/file"),
+ "dir/file": (generate_svn_file_id(self.repos.uuid, 2, "trunk", u"dir/file"),
self.repos.generate_revision_id(2, "trunk", "trunk0")),
- "bar": (generate_svn_file_id(self.repos.uuid, 3, "trunk", "bar"),
+ "bar": (generate_svn_file_id(self.repos.uuid, 3, "trunk", u"bar"),
self.repos.generate_revision_id(3, "trunk", "trunk0")),
- "bar/file": (generate_svn_file_id(self.repos.uuid, 3, "trunk", "bar/file"),
+ "bar/file": (generate_svn_file_id(self.repos.uuid, 3, "trunk", u"bar/file"),
self.repos.generate_revision_id(3, "trunk", "trunk0"))},
self.repos.get_fileid_map(3, "trunk", scheme))
=== modified file 'tests/test_repos.py'
--- a/tests/test_repos.py 2008-01-17 18:37:40 +0000
+++ b/tests/test_repos.py 2008-01-17 23:19:19 +0000
@@ -109,7 +109,7 @@
repos_url = self.make_client("a", "dc")
repos = Repository.open(repos_url)
revid = repos.generate_revision_id(0, "", "none")
- self.assertEqual({"": (generate_file_id(MockRepo(repos.uuid), revid, ""), revid)}, repos.get_fileid_map(0, "", NoBranchingScheme()))
+ self.assertEqual({u"": (generate_file_id(MockRepo(repos.uuid), revid, u""), revid)}, repos.get_fileid_map(0, "", NoBranchingScheme()))
def test_generate_revision_id_forced_revid(self):
repos_url = self.make_client("a", "dc")
@@ -1197,7 +1197,7 @@
self.assertEqual("foobar%b", unescape_svn_path("foobar%25b"))
def test_escape_svn_path_nordic(self):
- self.assertEqual("foobar%C3%A6", escape_svn_path(u"foobar\xe6"))
+ self.assertEqual("foobar%C3%A6", escape_svn_path(u"foobar\xe6".encode("utf-8")))
class SvnRepositoryFormatTests(TestCase):
=== modified file 'tests/test_revids.py'
--- a/tests/test_revids.py 2007-12-06 15:54:08 +0000
+++ b/tests/test_revids.py 2008-01-17 23:19:19 +0000
@@ -110,16 +110,12 @@
generate_svn_revision_id("myuuid", 5, "branch/path", "undefined"))
def test_generate_revid_special_char(self):
- self.assertEqual(u"svn-v%d-undefined:myuuid:branch%%2C:5" % MAPPING_VERSION,
- generate_svn_revision_id("myuuid", 5, u"branch\x2c", "undefined"))
-
- def test_generate_revid_special_char_ascii(self):
self.assertEqual("svn-v%d-undefined:myuuid:branch%%2C:5" % MAPPING_VERSION,
generate_svn_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,
- generate_svn_revision_id("myuuid", 5, u"branch\xe6", "undefined"))
+ generate_svn_revision_id("myuuid", 5, u"branch\xe6".encode("utf-8"), "undefined"))
def test_parse_revid_simple(self):
self.assertEqual(("uuid", "", 4, "undefined"),
=== modified file 'tests/test_scheme.py'
--- a/tests/test_scheme.py 2007-10-29 12:46:23 +0000
+++ b/tests/test_scheme.py 2008-01-17 23:19:19 +0000
@@ -142,10 +142,6 @@
self.scheme = ListBranchingScheme('QlpoOTFBWSZTWXb2s-UAAADBAAAQAQCgACGYGYQYXckU4UJB29rPlA..')
self.assertEquals(["foo"], self.scheme.branch_list)
- def test_create_from_unicode(self):
- self.scheme = ListBranchingScheme(u'QlpoOTFBWSZTWXb2s-UAAADBAAAQAQCgACGYGYQYXckU4UJB29rPlA..')
- self.assertEquals(["foo"], self.scheme.branch_list)
-
def test_is_tag_empty(self):
self.assertFalse(self.scheme.is_tag(""))
=== modified file 'tests/test_upgrade.py'
--- a/tests/test_upgrade.py 2007-10-23 12:31:34 +0000
+++ b/tests/test_upgrade.py 2008-01-17 23:19:19 +0000
@@ -157,7 +157,7 @@
tree = newrepos.revision_tree("customrev-svn%d-upgrade" % MAPPING_VERSION)
self.assertEqual("specificid", tree.inventory.path2id("a"))
- self.assertEqual(generate_svn_file_id(oldrepos.uuid, 1, "", "a"),
+ self.assertEqual(generate_svn_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 2007-10-22 18:42:08 +0000
+++ b/tests/test_workingtree.py 2008-01-17 23:19:19 +0000
@@ -283,7 +283,7 @@
self.assertEqual(wt.branch.generate_revision_id(0),
wt.basis_tree().inventory.revision_id)
inv = Inventory()
- root_id = generate_svn_file_id(wt.branch.repository.uuid, 0, "", "")
+ root_id = generate_svn_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
=== modified file 'workingtree.py'
--- a/workingtree.py 2007-12-23 03:25:57 +0000
+++ b/workingtree.py 2008-01-17 23:19:19 +0000
@@ -222,11 +222,11 @@
"""Generate a bzr file id from a Subversion file name.
:param revnum: Revision number.
- :param path: Absolute path.
+ :param path: Absolute path within the Subversion repository.
:return: Tuple with file id and revision id.
"""
assert isinstance(revnum, int) and revnum >= 0
- assert isinstance(path, basestring)
+ assert isinstance(path, str)
rp = self.branch.unprefix(path)
entry = self.base_tree.id_map[rp]
More information about the bazaar-commits
mailing list