Rev 2747: Add convenience Repository.call_in_write_group and use this for tests that in http://sourcefrog.net/bzr/pack-repository
Martin Pool
mbp at sourcefrog.net
Tue Aug 28 11:26:39 BST 2007
At http://sourcefrog.net/bzr/pack-repository
------------------------------------------------------------
revno: 2747
revision-id: mbp at sourcefrog.net-20070828102638-hljo5fm7a4bjthg2
parent: mbp at sourcefrog.net-20070828095109-8ljoy65xsu2dv0pf
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: pack-repository
timestamp: Tue 2007-08-28 20:26:38 +1000
message:
Add convenience Repository.call_in_write_group and use this for tests that
access Repository.add_inventory directly.
modified:
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/tests/blackbox/test_reconcile.py test_fix.py-20060223013051-9a188e15a5ee9451
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
bzrlib/tests/repository_implementations/test_reconcile.py test_reconcile.py-20060223022332-572ef70a3288e369
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py 2007-08-26 02:06:11 +0000
+++ b/bzrlib/repository.py 2007-08-28 10:26:38 +0000
@@ -526,6 +526,27 @@
# so we can detect unlock/relock - the write group is now entered.
self._write_group = self.get_transaction()
+ @needs_write_lock
+ def call_in_write_group(self, fn, *args, **kwargs):
+ """Call a callable within a write group.
+
+ On error the write group is aborted and on success it is commited.
+
+ This method may not be called if the repository is already in a
+ write group.
+
+ This can be used for testing methods normally used within a larger
+ write group.
+ """
+ self.start_write_group()
+ try:
+ result = fn(*args, **kwargs)
+ except:
+ self.abort_write_group()
+ raise
+ self.commit_write_group()
+ return result
+
def _start_write_group(self):
"""Template method for per-repository write group startup.
=== modified file 'bzrlib/tests/blackbox/test_reconcile.py'
--- a/bzrlib/tests/blackbox/test_reconcile.py 2007-06-27 19:13:50 +0000
+++ b/bzrlib/tests/blackbox/test_reconcile.py 2007-08-28 10:26:38 +0000
@@ -54,7 +54,8 @@
repo = t.branch.repository
inv = Inventory(revision_id='missing')
inv.root.revision='missing'
- repo.add_inventory('missing', inv, [])
+ repo.call_in_write_group(
+ repo.add_inventory, 'missing', inv, [])
(out, err) = self.run_bzr('reconcile')
self.assertEqualDiff(out, "Reconciling repository %s\n"
"Backup Inventory created.\n"
=== modified file 'bzrlib/tests/interrepository_implementations/test_interrepository.py'
--- a/bzrlib/tests/interrepository_implementations/test_interrepository.py 2007-08-23 23:41:32 +0000
+++ b/bzrlib/tests/interrepository_implementations/test_interrepository.py 2007-08-28 10:26:38 +0000
@@ -186,7 +186,8 @@
source.start_write_group()
inv['id'].revision = 'b'
inv.revision_id = 'b'
- sha1 = source.add_inventory('b', inv, ['a'])
+ sha1 = source.call_in_write_group(
+ source.add_inventory, 'b', inv, ['a'])
rev = Revision(timestamp=0,
timezone=None,
committer="Foo Bar <foo at example.com>",
@@ -299,7 +300,7 @@
repo = self.make_repository('with_ghost_rev')
repo.lock_write()
repo.start_write_group()
- sha1 = repo.add_inventory('ghost', inv, [])
+ sha1 = repo.call_in_write_group(repo.add_inventory, 'ghost', inv, [])
rev = bzrlib.revision.Revision(timestamp=0,
timezone=None,
committer="Foo Bar <foo at example.com>",
@@ -316,7 +317,8 @@
inv.root.revision = 'with_ghost'
repo.lock_write()
repo.start_write_group()
- sha1 = repo.add_inventory('with_ghost', inv, [])
+ sha1 = repo.call_in_write_group(
+ repo.add_inventory, 'with_ghost', inv, [])
rev = bzrlib.revision.Revision(timestamp=0,
timezone=None,
committer="Foo Bar <foo at example.com>",
=== modified file 'bzrlib/tests/repository_implementations/test_reconcile.py'
--- a/bzrlib/tests/repository_implementations/test_reconcile.py 2007-08-22 06:30:25 +0000
+++ b/bzrlib/tests/repository_implementations/test_reconcile.py 2007-08-28 10:26:38 +0000
@@ -60,7 +60,7 @@
repo.start_write_group()
inv = Inventory(revision_id='missing')
inv.root.revision = 'missing'
- repo.add_inventory('missing', inv, [])
+ repo.call_in_write_group(repo.add_inventory, 'missing', inv, [])
repo.commit_write_group()
repo.unlock()
@@ -71,10 +71,10 @@
repo = self.make_repository('inventory_without_revision_and_ghost')
repo.lock_write()
repo.start_write_group()
- repo.add_inventory('missing', inv, [])
+ repo.call_in_write_group(repo.add_inventory, 'missing', inv, [])
inv = Inventory(revision_id='references_missing')
inv.root.revision = 'references_missing'
- sha1 = repo.add_inventory('references_missing', inv, ['missing'])
+ sha1 = repo.call_in_write_group(repo.add_inventory, 'references_missing', inv, ['missing'])
rev = Revision(timestamp=0,
timezone=None,
committer="Foo Bar <foo at example.com>",
@@ -93,7 +93,7 @@
repo.start_write_group()
inv = Inventory(revision_id='ghost')
inv.root.revision = 'ghost'
- sha1 = repo.add_inventory('ghost', inv, [])
+ sha1 = repo.call_in_write_group(repo.add_inventory, 'ghost', inv, [])
rev = Revision(timestamp=0,
timezone=None,
committer="Foo Bar <foo at example.com>",
@@ -114,7 +114,7 @@
repo.start_write_group()
inv = Inventory(revision_id='the_ghost')
inv.root.revision = 'the_ghost'
- sha1 = repo.add_inventory('the_ghost', inv, [])
+ sha1 = repo.call_in_write_group(repo.add_inventory, 'the_ghost', inv, [])
rev = Revision(timestamp=0,
timezone=None,
committer="Foo Bar <foo at example.com>",
@@ -317,7 +317,8 @@
repo.start_write_group()
inv = Inventory(revision_id='wrong-first-parent')
inv.root.revision = 'wrong-first-parent'
- sha1 = repo.add_inventory('wrong-first-parent', inv, ['2', '1'])
+ sha1 = repo.call_in_write_group(repo.add_inventory,
+ 'wrong-first-parent', inv, ['2', '1'])
rev = Revision(timestamp=0,
timezone=None,
committer="Foo Bar <foo at example.com>",
@@ -335,7 +336,8 @@
repo.start_write_group()
inv = Inventory(revision_id='wrong-secondary-parent')
inv.root.revision = 'wrong-secondary-parent'
- sha1 = repo.add_inventory('wrong-secondary-parent', inv, ['1', '3', '2'])
+ sha1 = repo.call_in_write_group(repo.add_inventory,
+ 'wrong-secondary-parent', inv, ['1', '3', '2'])
rev = Revision(timestamp=0,
timezone=None,
committer="Foo Bar <foo at example.com>",
More information about the bazaar-commits
mailing list