Rev 5721: (jelmer) Skip more tests for repositories that don't implement the full in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Mon Mar 14 12:08:57 UTC 2011
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 5721 [merge]
revision-id: pqm at pqm.ubuntu.com-20110314120853-ot5tnefih540reoa
parent: pqm at pqm.ubuntu.com-20110314113235-vkdg2umzio48zlnu
parent: jelmer at samba.org-20110314000925-wozcyxwkcy55x5e8
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Mon 2011-03-14 12:08:53 +0000
message:
(jelmer) Skip more tests for repositories that don't implement the full
versionedfiles API. (Jelmer Vernooij)
modified:
bzrlib/tests/per_repository/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/per_repository_vf/test_repository.py test_repository.py-20110224144010-ukgfmlxcgsibq4u4-3
bzrlib/tests/test_inv.py testinv.py-20050722220913-1dc326138d1a5892
=== modified file 'bzrlib/tests/per_repository/test_repository.py'
--- a/bzrlib/tests/per_repository/test_repository.py 2011-03-11 15:36:12 +0000
+++ b/bzrlib/tests/per_repository/test_repository.py 2011-03-14 00:09:25 +0000
@@ -170,26 +170,6 @@
self.assertIsInstance(repo.texts,
versionedfile.VersionedFiles)
- def test_exposed_versioned_files_are_marked_dirty(self):
- repo = self.make_repository('.')
- repo.lock_write()
- signatures = repo.signatures
- revisions = repo.revisions
- inventories = repo.inventories
- repo.unlock()
- self.assertRaises(errors.ObjectNotLocked,
- signatures.keys)
- self.assertRaises(errors.ObjectNotLocked,
- revisions.keys)
- self.assertRaises(errors.ObjectNotLocked,
- inventories.keys)
- self.assertRaises(errors.ObjectNotLocked,
- signatures.add_lines, ('foo',), [], [])
- self.assertRaises(errors.ObjectNotLocked,
- revisions.add_lines, ('foo',), [], [])
- self.assertRaises(errors.ObjectNotLocked,
- inventories.add_lines, ('foo',), [], [])
-
def test_clone_to_default_format(self):
#TODO: Test that cloning a repository preserves all the information
# such as signatures[not tested yet] etc etc.
@@ -1083,97 +1063,6 @@
self.assertThat(repo.lock_write, ReturnsUnlockable(repo))
-class TestCaseWithComplexRepository(per_repository.TestCaseWithRepository):
-
- def setUp(self):
- super(TestCaseWithComplexRepository, self).setUp()
- tree_a = self.make_branch_and_tree('a')
- self.bzrdir = tree_a.branch.bzrdir
- # add a corrupt inventory 'orphan'
- # this may need some generalising for knits.
- tree_a.lock_write()
- try:
- tree_a.branch.repository.start_write_group()
- try:
- inv_file = tree_a.branch.repository.inventories
- inv_file.add_lines(('orphan',), [], [])
- except:
- tree_a.branch.repository.commit_write_group()
- raise
- else:
- tree_a.branch.repository.abort_write_group()
- finally:
- tree_a.unlock()
- # add a real revision 'rev1'
- tree_a.commit('rev1', rev_id='rev1', allow_pointless=True)
- # add a real revision 'rev2' based on rev1
- tree_a.commit('rev2', rev_id='rev2', allow_pointless=True)
- # add a reference to a ghost
- tree_a.add_parent_tree_id('ghost1')
- try:
- tree_a.commit('rev3', rev_id='rev3', allow_pointless=True)
- except errors.RevisionNotPresent:
- raise tests.TestNotApplicable(
- "Cannot test with ghosts for this format.")
- # add another reference to a ghost, and a second ghost.
- tree_a.add_parent_tree_id('ghost1')
- tree_a.add_parent_tree_id('ghost2')
- tree_a.commit('rev4', rev_id='rev4', allow_pointless=True)
-
- def test_revision_trees(self):
- revision_ids = ['rev1', 'rev2', 'rev3', 'rev4']
- repository = self.bzrdir.open_repository()
- repository.lock_read()
- self.addCleanup(repository.unlock)
- trees1 = list(repository.revision_trees(revision_ids))
- trees2 = [repository.revision_tree(t) for t in revision_ids]
- self.assertEqual(len(trees1), len(trees2))
- for tree1, tree2 in zip(trees1, trees2):
- self.assertFalse(tree2.changes_from(tree1).has_changed())
-
- def test_get_deltas_for_revisions(self):
- repository = self.bzrdir.open_repository()
- repository.lock_read()
- self.addCleanup(repository.unlock)
- revisions = [repository.get_revision(r) for r in
- ['rev1', 'rev2', 'rev3', 'rev4']]
- deltas1 = list(repository.get_deltas_for_revisions(revisions))
- deltas2 = [repository.get_revision_delta(r.revision_id) for r in
- revisions]
- self.assertEqual(deltas1, deltas2)
-
- def test_all_revision_ids(self):
- # all_revision_ids -> all revisions
- self.assertEqual(set(['rev1', 'rev2', 'rev3', 'rev4']),
- set(self.bzrdir.open_repository().all_revision_ids()))
-
- def test_get_ancestry_missing_revision(self):
- # get_ancestry(revision that is in some data but not fully installed
- # -> NoSuchRevision
- self.assertRaises(errors.NoSuchRevision,
- self.bzrdir.open_repository().get_ancestry, 'orphan')
-
- def test_get_unordered_ancestry(self):
- repo = self.bzrdir.open_repository()
- self.assertEqual(set(repo.get_ancestry('rev3')),
- set(repo.get_ancestry('rev3', topo_sorted=False)))
-
- def test_reserved_id(self):
- repo = self.make_repository('repository')
- repo.lock_write()
- repo.start_write_group()
- try:
- self.assertRaises(errors.ReservedId, repo.add_inventory, 'reserved:',
- None, None)
- self.assertRaises(errors.ReservedId, repo.add_inventory_by_delta,
- "foo", [], 'reserved:', None)
- self.assertRaises(errors.ReservedId, repo.add_revision, 'reserved:',
- None)
- finally:
- repo.abort_write_group()
- repo.unlock()
-
-
class TestCaseWithCorruptRepository(per_repository.TestCaseWithRepository):
def setUp(self):
=== modified file 'bzrlib/tests/per_repository_vf/test_repository.py'
--- a/bzrlib/tests/per_repository_vf/test_repository.py 2011-03-08 17:29:19 +0000
+++ b/bzrlib/tests/per_repository_vf/test_repository.py 2011-03-14 00:09:25 +0000
@@ -17,6 +17,8 @@
"""Tests for repository implementations - tests a repository format."""
from bzrlib import (
+ errors,
+ tests,
versionedfile,
)
@@ -89,3 +91,116 @@
repo = tree.branch.repository
self.assertIsInstance(repo.signatures,
versionedfile.VersionedFiles)
+
+ def test_exposed_versioned_files_are_marked_dirty(self):
+ repo = self.make_repository('.')
+ repo.lock_write()
+ signatures = repo.signatures
+ revisions = repo.revisions
+ inventories = repo.inventories
+ repo.unlock()
+ self.assertRaises(errors.ObjectNotLocked,
+ signatures.keys)
+ self.assertRaises(errors.ObjectNotLocked,
+ revisions.keys)
+ self.assertRaises(errors.ObjectNotLocked,
+ inventories.keys)
+ self.assertRaises(errors.ObjectNotLocked,
+ signatures.add_lines, ('foo',), [], [])
+ self.assertRaises(errors.ObjectNotLocked,
+ revisions.add_lines, ('foo',), [], [])
+ self.assertRaises(errors.ObjectNotLocked,
+ inventories.add_lines, ('foo',), [], [])
+
+
+class TestCaseWithComplexRepository(TestCaseWithRepository):
+
+ scenarios = all_repository_vf_format_scenarios()
+
+ def setUp(self):
+ super(TestCaseWithComplexRepository, self).setUp()
+ tree_a = self.make_branch_and_tree('a')
+ self.bzrdir = tree_a.branch.bzrdir
+ # add a corrupt inventory 'orphan'
+ # this may need some generalising for knits.
+ tree_a.lock_write()
+ try:
+ tree_a.branch.repository.start_write_group()
+ try:
+ inv_file = tree_a.branch.repository.inventories
+ inv_file.add_lines(('orphan',), [], [])
+ except:
+ tree_a.branch.repository.commit_write_group()
+ raise
+ else:
+ tree_a.branch.repository.abort_write_group()
+ finally:
+ tree_a.unlock()
+ # add a real revision 'rev1'
+ tree_a.commit('rev1', rev_id='rev1', allow_pointless=True)
+ # add a real revision 'rev2' based on rev1
+ tree_a.commit('rev2', rev_id='rev2', allow_pointless=True)
+ # add a reference to a ghost
+ tree_a.add_parent_tree_id('ghost1')
+ try:
+ tree_a.commit('rev3', rev_id='rev3', allow_pointless=True)
+ except errors.RevisionNotPresent:
+ raise tests.TestNotApplicable(
+ "Cannot test with ghosts for this format.")
+ # add another reference to a ghost, and a second ghost.
+ tree_a.add_parent_tree_id('ghost1')
+ tree_a.add_parent_tree_id('ghost2')
+ tree_a.commit('rev4', rev_id='rev4', allow_pointless=True)
+
+ def test_revision_trees(self):
+ revision_ids = ['rev1', 'rev2', 'rev3', 'rev4']
+ repository = self.bzrdir.open_repository()
+ repository.lock_read()
+ self.addCleanup(repository.unlock)
+ trees1 = list(repository.revision_trees(revision_ids))
+ trees2 = [repository.revision_tree(t) for t in revision_ids]
+ self.assertEqual(len(trees1), len(trees2))
+ for tree1, tree2 in zip(trees1, trees2):
+ self.assertFalse(tree2.changes_from(tree1).has_changed())
+
+ def test_get_deltas_for_revisions(self):
+ repository = self.bzrdir.open_repository()
+ repository.lock_read()
+ self.addCleanup(repository.unlock)
+ revisions = [repository.get_revision(r) for r in
+ ['rev1', 'rev2', 'rev3', 'rev4']]
+ deltas1 = list(repository.get_deltas_for_revisions(revisions))
+ deltas2 = [repository.get_revision_delta(r.revision_id) for r in
+ revisions]
+ self.assertEqual(deltas1, deltas2)
+
+ def test_all_revision_ids(self):
+ # all_revision_ids -> all revisions
+ self.assertEqual(set(['rev1', 'rev2', 'rev3', 'rev4']),
+ set(self.bzrdir.open_repository().all_revision_ids()))
+
+ def test_get_ancestry_missing_revision(self):
+ # get_ancestry(revision that is in some data but not fully installed
+ # -> NoSuchRevision
+ self.assertRaises(errors.NoSuchRevision,
+ self.bzrdir.open_repository().get_ancestry, 'orphan')
+
+ def test_get_unordered_ancestry(self):
+ repo = self.bzrdir.open_repository()
+ self.assertEqual(set(repo.get_ancestry('rev3')),
+ set(repo.get_ancestry('rev3', topo_sorted=False)))
+
+ def test_reserved_id(self):
+ repo = self.make_repository('repository')
+ repo.lock_write()
+ repo.start_write_group()
+ try:
+ self.assertRaises(errors.ReservedId, repo.add_inventory,
+ 'reserved:', None, None)
+ self.assertRaises(errors.ReservedId, repo.add_inventory_by_delta,
+ "foo", [], 'reserved:', None)
+ self.assertRaises(errors.ReservedId, repo.add_revision,
+ 'reserved:', None)
+ finally:
+ repo.abort_write_group()
+ repo.unlock()
=== modified file 'bzrlib/tests/test_inv.py'
--- a/bzrlib/tests/test_inv.py 2011-02-24 16:45:27 +0000
+++ b/bzrlib/tests/test_inv.py 2011-03-14 00:09:25 +0000
@@ -56,10 +56,14 @@
# just creating trees.
formats = set()
for _, format in repository.format_registry.iteritems():
- scenarios.append((str(format.__name__), {
- 'apply_delta':apply_inventory_Repository_add_inventory_by_delta,
- 'format':format}))
+ if format.supports_full_versioned_files:
+ scenarios.append((str(format.__name__), {
+ 'apply_delta':apply_inventory_Repository_add_inventory_by_delta,
+ 'format':format}))
for format in workingtree.format_registry._get_all():
+ repo_fmt = format._matchingbzrdir.repository_format
+ if not repo_fmt.supports_full_versioned_files:
+ continue
scenarios.append(
(str(format.__class__.__name__) + ".update_basis_by_delta", {
'apply_delta':apply_inventory_WT_basis,
@@ -79,7 +83,7 @@
lines = []
repo.texts.add_lines((ie.file_id, ie.revision), [], lines)
-
+
def apply_inventory_Inventory(self, basis, delta):
"""Apply delta to basis and return the result.
More information about the bazaar-commits
mailing list