/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_repository/test_repository.py

  • Committer: Jelmer Vernooij
  • Date: 2011-03-14 00:09:25 UTC
  • mto: This revision was merged to the branch mainline in revision 5721.
  • Revision ID: jelmer@samba.org-20110314000925-wozcyxwkcy55x5e8
Skip more tests for repository formats that don't support the full
versioned files API.

Show diffs side-by-side

added added

removed removed

Lines of Context:
170
170
        self.assertIsInstance(repo.texts,
171
171
            versionedfile.VersionedFiles)
172
172
 
173
 
    def test_exposed_versioned_files_are_marked_dirty(self):
174
 
        repo = self.make_repository('.')
175
 
        repo.lock_write()
176
 
        signatures = repo.signatures
177
 
        revisions = repo.revisions
178
 
        inventories = repo.inventories
179
 
        repo.unlock()
180
 
        self.assertRaises(errors.ObjectNotLocked,
181
 
            signatures.keys)
182
 
        self.assertRaises(errors.ObjectNotLocked,
183
 
            revisions.keys)
184
 
        self.assertRaises(errors.ObjectNotLocked,
185
 
            inventories.keys)
186
 
        self.assertRaises(errors.ObjectNotLocked,
187
 
            signatures.add_lines, ('foo',), [], [])
188
 
        self.assertRaises(errors.ObjectNotLocked,
189
 
            revisions.add_lines, ('foo',), [], [])
190
 
        self.assertRaises(errors.ObjectNotLocked,
191
 
            inventories.add_lines, ('foo',), [], [])
192
 
 
193
173
    def test_clone_to_default_format(self):
194
174
        #TODO: Test that cloning a repository preserves all the information
195
175
        # such as signatures[not tested yet] etc etc.
1083
1063
        self.assertThat(repo.lock_write, ReturnsUnlockable(repo))
1084
1064
 
1085
1065
 
1086
 
class TestCaseWithComplexRepository(per_repository.TestCaseWithRepository):
1087
 
 
1088
 
    def setUp(self):
1089
 
        super(TestCaseWithComplexRepository, self).setUp()
1090
 
        tree_a = self.make_branch_and_tree('a')
1091
 
        self.bzrdir = tree_a.branch.bzrdir
1092
 
        # add a corrupt inventory 'orphan'
1093
 
        # this may need some generalising for knits.
1094
 
        tree_a.lock_write()
1095
 
        try:
1096
 
            tree_a.branch.repository.start_write_group()
1097
 
            try:
1098
 
                inv_file = tree_a.branch.repository.inventories
1099
 
                inv_file.add_lines(('orphan',), [], [])
1100
 
            except:
1101
 
                tree_a.branch.repository.commit_write_group()
1102
 
                raise
1103
 
            else:
1104
 
                tree_a.branch.repository.abort_write_group()
1105
 
        finally:
1106
 
            tree_a.unlock()
1107
 
        # add a real revision 'rev1'
1108
 
        tree_a.commit('rev1', rev_id='rev1', allow_pointless=True)
1109
 
        # add a real revision 'rev2' based on rev1
1110
 
        tree_a.commit('rev2', rev_id='rev2', allow_pointless=True)
1111
 
        # add a reference to a ghost
1112
 
        tree_a.add_parent_tree_id('ghost1')
1113
 
        try:
1114
 
            tree_a.commit('rev3', rev_id='rev3', allow_pointless=True)
1115
 
        except errors.RevisionNotPresent:
1116
 
            raise tests.TestNotApplicable(
1117
 
                "Cannot test with ghosts for this format.")
1118
 
        # add another reference to a ghost, and a second ghost.
1119
 
        tree_a.add_parent_tree_id('ghost1')
1120
 
        tree_a.add_parent_tree_id('ghost2')
1121
 
        tree_a.commit('rev4', rev_id='rev4', allow_pointless=True)
1122
 
 
1123
 
    def test_revision_trees(self):
1124
 
        revision_ids = ['rev1', 'rev2', 'rev3', 'rev4']
1125
 
        repository = self.bzrdir.open_repository()
1126
 
        repository.lock_read()
1127
 
        self.addCleanup(repository.unlock)
1128
 
        trees1 = list(repository.revision_trees(revision_ids))
1129
 
        trees2 = [repository.revision_tree(t) for t in revision_ids]
1130
 
        self.assertEqual(len(trees1), len(trees2))
1131
 
        for tree1, tree2 in zip(trees1, trees2):
1132
 
            self.assertFalse(tree2.changes_from(tree1).has_changed())
1133
 
 
1134
 
    def test_get_deltas_for_revisions(self):
1135
 
        repository = self.bzrdir.open_repository()
1136
 
        repository.lock_read()
1137
 
        self.addCleanup(repository.unlock)
1138
 
        revisions = [repository.get_revision(r) for r in
1139
 
                     ['rev1', 'rev2', 'rev3', 'rev4']]
1140
 
        deltas1 = list(repository.get_deltas_for_revisions(revisions))
1141
 
        deltas2 = [repository.get_revision_delta(r.revision_id) for r in
1142
 
                   revisions]
1143
 
        self.assertEqual(deltas1, deltas2)
1144
 
 
1145
 
    def test_all_revision_ids(self):
1146
 
        # all_revision_ids -> all revisions
1147
 
        self.assertEqual(set(['rev1', 'rev2', 'rev3', 'rev4']),
1148
 
            set(self.bzrdir.open_repository().all_revision_ids()))
1149
 
 
1150
 
    def test_get_ancestry_missing_revision(self):
1151
 
        # get_ancestry(revision that is in some data but not fully installed
1152
 
        # -> NoSuchRevision
1153
 
        self.assertRaises(errors.NoSuchRevision,
1154
 
                          self.bzrdir.open_repository().get_ancestry, 'orphan')
1155
 
 
1156
 
    def test_get_unordered_ancestry(self):
1157
 
        repo = self.bzrdir.open_repository()
1158
 
        self.assertEqual(set(repo.get_ancestry('rev3')),
1159
 
                         set(repo.get_ancestry('rev3', topo_sorted=False)))
1160
 
 
1161
 
    def test_reserved_id(self):
1162
 
        repo = self.make_repository('repository')
1163
 
        repo.lock_write()
1164
 
        repo.start_write_group()
1165
 
        try:
1166
 
            self.assertRaises(errors.ReservedId, repo.add_inventory, 'reserved:',
1167
 
                              None, None)
1168
 
            self.assertRaises(errors.ReservedId, repo.add_inventory_by_delta,
1169
 
                "foo", [], 'reserved:', None)
1170
 
            self.assertRaises(errors.ReservedId, repo.add_revision, 'reserved:',
1171
 
                              None)
1172
 
        finally:
1173
 
            repo.abort_write_group()
1174
 
            repo.unlock()
1175
 
 
1176
 
 
1177
1066
class TestCaseWithCorruptRepository(per_repository.TestCaseWithRepository):
1178
1067
 
1179
1068
    def setUp(self):