Rev 443: Fix the test suite, add tests for committing to heavyweight checkouts. in file:///home/jelmer/bzr-svn/customrevids/
Jelmer Vernooij
jelmer at samba.org
Fri May 18 17:49:30 BST 2007
At file:///home/jelmer/bzr-svn/customrevids/
------------------------------------------------------------
revno: 443
revision-id: jelmer at samba.org-20070518164929-14kc2rnucp1bx60y
parent: jelmer at samba.org-20070518151130-cy22ujf5331vk8wr
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: customrevids
timestamp: Fri 2007-05-18 17:49:29 +0100
message:
Fix the test suite, add tests for committing to heavyweight checkouts.
modified:
BRANCH.TODO branch.todo-20070516183134-f9xjfbsv6x6u6x2t-1
checkout.py workingtree.py-20060306120941-b083cb0fdd4a69de
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
tests/test_commit.py test_commit.py-20060624213521-l5kcufywkh9mnilk-1
tests/test_fileids.py test_fileids.py-20060622131341-19gyrlgqy8yl2od5-1
tests/test_push.py test_push.py-20070201165715-g2ievcdfqi33wqsy-1
tests/test_repos.py test_repos.py-20060508151940-ddc49a59257ca712
=== modified file 'BRANCH.TODO'
--- a/BRANCH.TODO 2007-05-18 12:22:57 +0000
+++ b/BRANCH.TODO 2007-05-18 16:49:29 +0000
@@ -1,6 +1,1 @@
-- add tests to make sure a revision is still 100% the same after being pushed
- to subversion
- still not kept:
- - timestamp
- - timezone
- - committer
+- test commits in heavyweight bound branches
=== modified file 'checkout.py'
--- a/checkout.py 2007-05-18 15:11:30 +0000
+++ b/checkout.py 2007-05-18 16:49:29 +0000
@@ -34,8 +34,8 @@
from errors import LocalCommitsUnsupported
from repository import (SvnRepository, SVN_PROP_BZR_MERGE,
SVN_PROP_SVK_MERGE, SVN_PROP_BZR_FILEIDS,
- SVN_PROP_BZR_REVISION_ID,
- revision_id_to_svk_feature)
+ SVN_PROP_BZR_REVISION_ID, SVN_PROP_BZR_REVISION_INFO,
+ revision_id_to_svk_feature, generate_revision_metadata)
from revids import escape_svn_path
from scheme import BranchingScheme
from transport import (SvnRaTransport, svn_config, bzr_to_svn_url,
@@ -402,9 +402,9 @@
allow_pointless=True, strict=False, verbose=False, local=False,
reporter=None, config=None, specific_files=None):
# FIXME: Use allow_pointless
- # FIXME: Use committer
# FIXME: Use verbose
# FIXME: Use reporter
+ # FIXME: Use committer
# FIXME: Use revprops
# FIXME: Use strict
assert timestamp is None
@@ -437,6 +437,12 @@
svn.wc.prop_set(SVN_PROP_BZR_REVISION_ID,
self._get_bzr_revids() + extra,
self.basedir, wc)
+ svn.wc.prop_set(SVN_PROP_BZR_REVISION_INFO,
+ generate_revision_metadata(timestamp,
+ timezone,
+ committer,
+ revprops),
+ self.basedir, wc)
finally:
svn.wc.adm_close(wc)
=== modified file 'commit.py'
--- a/commit.py 2007-05-18 15:11:30 +0000
+++ b/commit.py 2007-05-18 16:49:29 +0000
@@ -446,6 +446,9 @@
builder = SvnCommitBuilder(target.repository, target,
[revision_id, prev_revid],
target.get_config(),
+ None,
+ None,
+ None,
rev.properties,
None,
new_tree.inventory)
@@ -485,6 +488,9 @@
builder = SvnCommitBuilder(target.repository, target,
rev.parent_ids,
target.get_config(),
+ rev.timestamp,
+ rev.timezone,
+ rev.committer,
rev.properties,
revision_id,
new_tree.inventory)
=== modified file 'repository.py'
--- a/repository.py 2007-05-18 15:11:30 +0000
+++ b/repository.py 2007-05-18 16:49:29 +0000
@@ -63,17 +63,18 @@
except ValueError:
raise BzrError("Missing : in revision metadata")
if key == "committer":
- rev.committer = value
+ rev.committer = str(value)
elif key == "timestamp":
(rev.timestamp, rev.timezone) = unpack_highres_date(value)
elif key == "properties":
in_properties = True
elif key[0] == "\t" and in_properties:
- rev.properties[key[1:]] = value
+ rev.properties[str(key[1:])] = str(value)
else:
raise BzrError("Invalid key %r" % key)
def generate_revision_metadata(timestamp, timezone, committer, revprops):
+ assert timestamp is None or isinstance(timestamp, float)
text = ""
if timestamp is not None:
text += "timestamp: %s\n" % format_highres_date(timestamp, timezone)
@@ -81,7 +82,7 @@
text += "committer: %s\n" % committer
if revprops is not None and revprops != {}:
text += "properties: \n"
- for k, v in revprops.items():
+ for k, v in sorted(revprops.items()):
text += "\t%s: %s\n" % (k, v)
return text
=== modified file 'tests/test_commit.py'
--- a/tests/test_commit.py 2007-05-18 15:11:30 +0000
+++ b/tests/test_commit.py 2007-05-18 16:49:29 +0000
@@ -19,6 +19,7 @@
from bzrlib.branch import Branch, PullResult
from bzrlib.bzrdir import BzrDir
from bzrlib.errors import DivergedBranches, BzrError
+from bzrlib.trace import mutter
from bzrlib.workingtree import WorkingTree
from copy import copy
@@ -79,6 +80,15 @@
self.assertRaises(BzrError, wt.commit,
message="data", local=True)
+ def test_commit_committer(self):
+ self.make_client('d', 'dc')
+ self.build_tree({'dc/foo/bla': "data"})
+ self.client_add("dc/foo")
+ wt = self.open_checkout("dc")
+ revid = wt.commit(message="data", committer="john doe")
+ rev = wt.branch.repository.get_revision(revid)
+ self.assertEquals("john doe", rev.committer)
+
def test_commit_message_nordic(self):
self.make_client('d', 'dc')
self.build_tree({'dc/foo/bla': "data"})
@@ -147,7 +157,7 @@
branch = Branch.open(repos_url)
builder = branch.get_commit_builder([branch.last_revision()],
- timestamp=4534, timezone=2, committer="fry",
+ timestamp=4534.0, timezone=2, committer="fry",
revision_id="my-revision-id")
tree = branch.repository.revision_tree(branch.last_revision())
new_tree = copy(tree)
@@ -160,12 +170,8 @@
self.assertEqual("my-revision-id\n",
self.client_get_prop("dc", "bzr:revision-id-v%d" % MAPPING_VERSION, 2))
- self.assertEqual("fry",
- self.client_get_prop("dc", "bzr:committer", 2))
-
- self.assertEqual("4534T2",
- self.client_get_prop("dc", "bzr:timestamp", 2))
-
+ self.assertEqual("timestamp: Thu 1970-01-01 01:15:36.000000000 +0000\ncommitter: fry\n",
+ self.client_get_prop("dc", "bzr:revision-info", 2))
def test_mwh(self):
repo = self.make_client('d', 'sc')
@@ -357,3 +363,25 @@
self.client_update("sc")
self.assertTrue(os.path.exists("sc/foo/trunk/file"))
self.assertFalse(os.path.exists("sc/foo/trunk/filel"))
+
+class HeavyWeightCheckoutTests(TestCaseWithSubversionRepository):
+ def test_bind(self):
+ repos_url = self.make_client("d", "sc")
+ master_branch = Branch.open(repos_url)
+ local_bzrdir = BzrDir.create(".")
+ local_bzrdir.create_repository()
+ local_branch = master_branch.sprout(local_bzrdir)
+ wt = local_bzrdir.create_workingtree()
+ local_branch.bind(master_branch)
+
+ def test_commit(self):
+ repos_url = self.make_client("d", "sc")
+ master_branch = Branch.open(repos_url)
+ local_bzrdir = BzrDir.create(".")
+ local_bzrdir.create_repository()
+ local_branch = master_branch.sprout(local_bzrdir)
+ wt = local_bzrdir.create_workingtree()
+ local_branch.bind(master_branch)
+ self.build_tree({'b/file': 'data'})
+ wt.add('file')
+ wt.commit(message="Commit from Bzr")
=== modified file 'tests/test_fileids.py'
--- a/tests/test_fileids.py 2007-05-18 15:11:30 +0000
+++ b/tests/test_fileids.py 2007-05-18 16:49:29 +0000
@@ -30,7 +30,9 @@
from tests import TestCaseWithSubversionRepository, RENAMES
class MockRepo:
- uuid = "uuid"
+ def __init__(self, uuid="uuid"):
+ self.uuid = uuid
+
def lookup_revision_id(self, revid):
ret = parse_svn_revision_id(revid)
return ret[1], ret[2]
=== modified file 'tests/test_push.py'
--- a/tests/test_push.py 2007-05-18 15:11:30 +0000
+++ b/tests/test_push.py 2007-05-18 16:49:29 +0000
@@ -105,9 +105,8 @@
repos = self.svndir.find_repository()
inv = repos.get_inventory(repos.generate_revision_id(2, ""))
self.assertTrue(inv.has_filename('file'))
- self.assertTrue(wt.branch.last_revision() in
- repos.revision_parents(
- repos.generate_revision_id(2, "")))
+ self.assertEquals(wt.branch.last_revision(),
+ repos.generate_revision_id(2, ""))
self.assertEqual(repos.generate_revision_id(2, ""),
self.svndir.open_branch().last_revision())
@@ -122,8 +121,8 @@
repos = self.svndir.find_repository()
inv = repos.get_inventory(repos.generate_revision_id(2, ""))
self.assertTrue(inv.has_filename('file'))
- self.assertTrue(wt.branch.last_revision() in
- repos.revision_parents(repos.generate_revision_id(2, "")))
+ self.assertEquals(wt.branch.last_revision(),
+ repos.generate_revision_id(2, ""))
self.assertEqual(repos.generate_revision_id(2, ""),
self.svndir.open_branch().last_revision())
@@ -167,7 +166,12 @@
rev1 = self.svndir.find_repository().get_revision(wt.branch.last_revision())
rev2 = self.bzrdir.find_repository().get_revision(wt.branch.last_revision())
- self.assertEqual(rev1, rev2)
+ self.assertEqual(rev1.committer, rev2.committer)
+ self.assertEqual(rev1.timestamp, rev2.timestamp)
+ self.assertEqual(rev1.timezone, rev2.timezone)
+ self.assertEqual(rev1.properties, rev2.properties)
+ self.assertEqual(rev1.message, rev2.message)
+ self.assertEqual(rev1.revision_id, rev2.revision_id)
def test_multiple_merged(self):
self.build_tree({'dc/file': 'data'})
=== modified file 'tests/test_repos.py'
--- a/tests/test_repos.py 2007-05-18 15:11:30 +0000
+++ b/tests/test_repos.py 2007-05-18 16:49:29 +0000
@@ -18,7 +18,7 @@
from bzrlib.branch import Branch
from bzrlib.bzrdir import BzrDir
-from bzrlib.errors import NoSuchRevision, UninitializableFormat
+from bzrlib.errors import NoSuchRevision, UninitializableFormat, BzrError
from bzrlib.inventory import Inventory
from bzrlib.repository import Repository
from bzrlib.revision import NULL_REVISION, Revision
@@ -34,6 +34,7 @@
from scheme import TrunkBranchingScheme, NoBranchingScheme
from transport import SvnRaTransport
from tests import TestCaseWithSubversionRepository
+from tests.test_fileids import MockRepo
from repository import (svk_feature_to_revision_id, revision_id_to_svk_feature,
SvnRepositoryFormat, SVN_PROP_BZR_REVISION_ID,
generate_revision_metadata, parse_revision_metadata)
@@ -76,7 +77,7 @@
repos_url = self.make_client("a", "dc")
repos = Repository.open(repos_url)
revid = repos.generate_revision_id(0, "")
- self.assertEqual({"": (generate_file_id(revid, ""), revid)}, repos.get_fileid_map(0, ""))
+ self.assertEqual({"": (generate_file_id(MockRepo(repos.uuid), revid, ""), revid)}, repos.get_fileid_map(0, ""))
def test_generate_revision_id_forced_revid(self):
repos_url = self.make_client("a", "dc")
@@ -2294,42 +2295,42 @@
generate_revision_metadata(None, None, "bla", None))
def test_generate_revision_metadata_timestamp(self):
- self.assertEquals("timestamp: Thu 2005-06-30 17:38:52 +0000\n",
- generate_revision_metadata('1120153132.350850105', 0,
+ self.assertEquals("timestamp: Thu 2005-06-30 17:38:52.350850105 +0000\n",
+ generate_revision_metadata(1120153132.350850105, 0,
None, None))
def test_generate_revision_metadata_properties(self):
- self.assertEquals("properties:\n" +
- "\tpropfoo: bla\n" +
- "\tpropbla: bloe\n",
+ self.assertEquals("properties: \n" +
+ "\tpropbla: bloe\n" +
+ "\tpropfoo: bla\n",
generate_revision_metadata(None, None,
- None, {"propfoo": "bla", "propbla": "bloe"}))
+ None, {"propbla": "bloe", "propfoo": "bla"}))
def test_parse_revision_metadata_empty(self):
parse_revision_metadata("", None)
def test_parse_revision_metadata_committer(self):
- rev = Revision()
+ rev = Revision('someid')
parse_revision_metadata("committer: somebody\n", rev)
self.assertEquals("somebody", rev.committer)
def test_parse_revision_metadata_timestamp(self):
- rev = Revision()
+ rev = Revision('someid')
parse_revision_metadata("timestamp: Thu 2005-06-30 12:38:52.350850105 -0500\n", rev)
self.assertEquals(1120153132.3508501, rev.timestamp)
self.assertEquals(-18000, rev.timezone)
def test_parse_revision_metadata_properties(self):
- rev = Revision()
+ rev = Revision('someid')
parse_revision_metadata("properties: \n" +
"\tfoo: bar\n" +
"\tha: ha\n", rev)
- self.assertEquals({"foo": "bar", "ha": "ha"}, rev.revprops)
+ self.assertEquals({"foo": "bar", "ha": "ha"}, rev.properties)
def test_parse_revision_metadata_no_colon(self):
- rev = Revision()
+ rev = Revision('someid')
self.assertRaises(BzrError, lambda: parse_revision_metadata("bla", rev))
def test_parse_revision_metadata_invalid_name(self):
- rev = Revision()
+ rev = Revision('someid')
self.assertRaises(BzrError, lambda: parse_revision_metadata("bla: b", rev))
More information about the bazaar-commits
mailing list