Rev 5765: (jelmer) Add a RepositoryFormat.supports_signatures flag. (Jelmer Vernooij) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu Apr 7 11:15:52 UTC 2011


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 5765 [merge]
revision-id: pqm at pqm.ubuntu.com-20110407111546-99kqi96vnk9u8qvc
parent: pqm at pqm.ubuntu.com-20110406110717-u00w5z9lcww3o6xs
parent: jelmer at samba.org-20110406110439-od66rom3mk02lz2n
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2011-04-07 11:15:46 +0000
message:
  (jelmer) Add a RepositoryFormat.supports_signatures flag. (Jelmer Vernooij)
modified:
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/tests/per_repository/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
  bzrlib/tests/per_repository/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2011-04-05 01:12:15 +0000
+++ b/bzrlib/repository.py	2011-04-07 11:15:46 +0000
@@ -3017,6 +3017,8 @@
     supports_leaving_lock = None
     # Does this format support the full VersionedFiles interface?
     supports_full_versioned_files = None
+    # Does this format support signing revision signatures?
+    supports_revision_signatures = True
 
     def __repr__(self):
         return "%s()" % self.__class__.__name__

=== modified file 'bzrlib/tests/per_repository/test_fetch.py'
--- a/bzrlib/tests/per_repository/test_fetch.py	2010-06-20 11:18:38 +0000
+++ b/bzrlib/tests/per_repository/test_fetch.py	2011-04-02 20:53:50 +0000
@@ -26,7 +26,10 @@
     tests,
     )
 from bzrlib.inventory import ROOT_ID
-from bzrlib.tests import TestSkipped
+from bzrlib.tests import (
+    TestNotApplicable,
+    TestSkipped,
+    )
 from bzrlib.tests.per_repository import TestCaseWithRepository
 
 
@@ -263,7 +266,11 @@
         repo = wt.branch.repository
         repo.lock_write()
         repo.start_write_group()
-        repo.sign_revision('rev1', gpg.LoopbackGPGStrategy(None))
+        try:
+            repo.sign_revision('rev1', gpg.LoopbackGPGStrategy(None))
+        except errors.UnsupportedOperation:
+            self.assertFalse(repo._format.supports_revision_signatures)
+            raise TestNotApplicable("repository format does not support signatures")
         repo.commit_write_group()
         repo.unlock()
         return repo

=== modified file 'bzrlib/tests/per_repository/test_repository.py'
--- a/bzrlib/tests/per_repository/test_repository.py	2011-03-14 00:09:25 +0000
+++ b/bzrlib/tests/per_repository/test_repository.py	2011-04-06 11:04:39 +0000
@@ -442,7 +442,11 @@
         repo = wt.branch.repository
         repo.lock_write()
         repo.start_write_group()
-        repo.sign_revision('A', gpg.LoopbackGPGStrategy(None))
+        try:
+            repo.sign_revision('A', gpg.LoopbackGPGStrategy(None))
+        except errors.UnsupportedOperation:
+            self.assertFalse(repo._format.supports_revision_signatures)
+            raise TestNotApplicable("signatures not supported by repository format")
         repo.commit_write_group()
         repo.unlock()
         old_signature = repo.get_signature_text('A')
@@ -594,7 +598,12 @@
         repo = tree.branch.repository
         repo.lock_write()
         repo.start_write_group()
-        repo.sign_revision('rev_id', gpg.LoopbackGPGStrategy(None))
+        try:
+            repo.sign_revision('rev_id', gpg.LoopbackGPGStrategy(None))
+        except errors.UnsupportedOperation:
+            signature_texts = []
+        else:
+            signature_texts = ['rev_id']
         repo.commit_write_group()
         repo.unlock()
         repo.lock_read()
@@ -609,7 +618,7 @@
         expected_item_keys = [
             ('file', 'file1', ['rev_id']),
             ('inventory', None, ['rev_id']),
-            ('signatures', None, ['rev_id']),
+            ('signatures', None, signature_texts),
             ('revisions', None, ['rev_id'])]
         item_keys = list(repo.item_keys_introduced_by(['rev_id']))
         item_keys = [
@@ -698,20 +707,24 @@
         repo._check_for_inconsistent_revision_parents()
 
     def test_add_signature_text(self):
-        repo = self.make_repository('repo')
-        repo.lock_write()
-        self.addCleanup(repo.unlock)
-        repo.start_write_group()
-        self.addCleanup(repo.abort_write_group)
-        inv = inventory.Inventory(revision_id='A')
-        inv.root.revision = 'A'
-        repo.add_inventory('A', inv, [])
-        repo.add_revision('A', _mod_revision.Revision(
-                'A', committer='A', timestamp=0,
-                inventory_sha1='', timezone=0, message='A'))
-        repo.add_signature_text('A', 'This might be a signature')
-        self.assertEqual('This might be a signature',
-                         repo.get_signature_text('A'))
+        builder = self.make_branch_builder('.')
+        builder.start_series()
+        builder.build_snapshot('A', None, [
+            ('add', ('', 'root-id', 'directory', None))])
+        builder.finish_series()
+        b = builder.get_branch()
+        b.lock_write()
+        self.addCleanup(b.unlock)
+        b.repository.start_write_group()
+        self.addCleanup(b.repository.abort_write_group)
+        if b.repository._format.supports_revision_signatures:
+            b.repository.add_signature_text('A', 'This might be a signature')
+            self.assertEqual('This might be a signature',
+                             b.repository.get_signature_text('A'))
+        else:
+            self.assertRaises(errors.UnsupportedOperation,
+                b.repository.add_signature_text, 'A',
+                'This might be a signature')
 
     def test_add_revision_inventory_sha1(self):
         inv = inventory.Inventory(revision_id='A')




More information about the bazaar-commits mailing list