~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/repository_implementations/test_reconcile.py

Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
139
139
        # and no backup weave should have been needed/made.
140
140
        self.checkNoBackupInventory(d)
141
141
 
142
 
    def test_reconile_empty(self):
 
142
    def test_reconcile_empty(self):
143
143
        # in an empty repo, theres nothing to do.
144
144
        self.checkEmptyReconcile()
145
145
 
 
146
    def test_repo_has_reconcile_does_inventory_gc_attribute(self):
 
147
        repo = self.make_repository('repo')
 
148
        self.assertNotEqual(None, repo._reconcile_does_inventory_gc)
 
149
 
146
150
    def test_reconcile_empty_thorough(self):
147
151
        # reconcile should accept thorough=True
148
152
        self.checkEmptyReconcile(thorough=True)
151
155
        # smoke test for the all in one ui tool
152
156
        bzrdir_url = self.get_url('inventory_without_revision')
153
157
        bzrdir = bzrlib.bzrdir.BzrDir.open(bzrdir_url)
 
158
        repo = bzrdir.open_repository()
 
159
        if not repo._reconcile_does_inventory_gc:
 
160
            raise TestSkipped('Irrelevant test')
154
161
        reconcile(bzrdir)
155
162
        # now the backup should have it but not the current inventory
156
163
        repo = bzrdir.open_repository()
161
168
        d_url = self.get_url('inventory_without_revision')
162
169
        d = bzrlib.bzrdir.BzrDir.open(d_url)
163
170
        repo = d.open_repository()
 
171
        if not repo._reconcile_does_inventory_gc:
 
172
            raise TestSkipped('Irrelevant test')
164
173
        self.checkUnreconciled(d, repo.reconcile())
165
174
        reconciler = repo.reconcile(thorough=True)
166
175
        # no bad parents
167
176
        self.assertEqual(0, reconciler.inconsistent_parents)
168
 
        # and one garbage inventoriy
 
177
        # and one garbage inventory
169
178
        self.assertEqual(1, reconciler.garbage_inventories)
170
179
        self.check_missing_was_removed(repo)
171
180
 
173
182
            **kwargs):
174
183
        # actual low level test.
175
184
        repo = aBzrDir.open_repository()
176
 
        if ([None, 'missing', 'references_missing'] 
 
185
        if ([None, 'missing', 'references_missing']
177
186
            != repo.get_ancestry('references_missing')):
178
187
            # the repo handles ghosts without corruption, so reconcile has
179
 
            # nothing to do here
 
188
            # nothing to do here. Specifically, this test has the inventory
 
189
            # 'missing' present and the revision 'missing' missing, so clearly
 
190
            # 'missing' cannot be reported in the present ancestry -> missing
 
191
            # is something that can be filled as a ghost.
180
192
            expected_inconsistent_parents = 0
181
193
        else:
182
194
            expected_inconsistent_parents = 1
206
218
        # other tests use the lower level repo.reconcile()
207
219
        d_url = self.get_url('inventory_without_revision_and_ghost')
208
220
        d = bzrlib.bzrdir.BzrDir.open(d_url)
 
221
        if not d.open_repository()._reconcile_does_inventory_gc:
 
222
            raise TestSkipped('Irrelevant test')
209
223
        def reconcile():
210
224
            reconciler = Reconciler(d)
211
225
            reconciler.reconcile()
217
231
        d_url = self.get_url('inventory_without_revision_and_ghost')
218
232
        d = bzrlib.bzrdir.BzrDir.open(d_url)
219
233
        repo = d.open_repository()
 
234
        if not repo._reconcile_does_inventory_gc:
 
235
            raise TestSkipped('Irrelevant test')
220
236
        # nothing should have been altered yet : inventories without
221
237
        # revisions are not data loss incurring for current format
222
238
        self.check_thorough_reweave_missing_revision(d, repo.reconcile,
351
367
        g = repo.get_revision_graph()
352
368
        self.assertEqual(('1', '2'), g['wrong-first-parent'])
353
369
 
354
 
    def test_reconcile_wrong_order_secondary(self):
355
 
        # a wrong order in secondary parents is ignored.
 
370
    def test_reconcile_wrong_order_secondary_inventory(self):
 
371
        # a wrong order in the parents for inventories is ignored.
356
372
        t = get_transport(self.get_url()).clone('reversed-secondary-parents')
357
373
        d = bzrlib.bzrdir.BzrDir.open_from_transport(t)
358
374
        repo = d.open_repository()