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