~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-03-09 06:39:13 UTC
  • mfrom: (1596.2.6 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20060309063913-6d8ce700706d0802
Merge knit performance stage 1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
import bzrlib
21
21
import bzrlib.errors as errors
22
 
from bzrlib.reconcile import reconcile, Reconciler, RepoReconciler
 
22
from bzrlib.reconcile import reconcile, Reconciler
23
23
from bzrlib.revision import Revision
24
24
from bzrlib.tests.repository_implementations.test_repository import TestCaseWithRepository
25
25
from bzrlib.transport import get_transport
80
80
        self.make_repository('empty')
81
81
        d = bzrlib.bzrdir.BzrDir.open('empty')
82
82
        # calling on a empty repository should do nothing
83
 
        reconciler = RepoReconciler(d.find_repository())
84
 
        reconciler.reconcile()
 
83
        reconciler = d.find_repository().reconcile()
85
84
        # no inconsistent parents should have been found
86
85
        self.assertEqual(0, reconciler.inconsistent_parents)
87
86
        # and no garbage inventories
107
106
 
108
107
    def test_reweave_inventory_without_revision_reconciler(self):
109
108
        # smoke test for the all in one Reconciler class,
110
 
        # other tests use the lower level RepoReconciler.
 
109
        # other tests use the lower level repo.reconcile()
111
110
        d = bzrlib.bzrdir.BzrDir.open('inventory_without_revision')
112
111
        reconciler = Reconciler(d)
113
112
        reconciler.reconcile()
126
125
    def test_reweave_inventory_without_revision(self):
127
126
        # actual low level test.
128
127
        d = bzrlib.bzrdir.BzrDir.open('inventory_without_revision')
129
 
        reconciler = RepoReconciler(d.open_repository())
130
 
        reconciler.reconcile()
131
 
        # no inconsistent parents should have been found
132
 
        self.assertEqual(1, reconciler.inconsistent_parents)
 
128
        repo = d.open_repository()
 
129
        if ([None, 'missing', 'references_missing'] 
 
130
            != repo.get_ancestry('references_missing')):
 
131
            # the repo handles ghosts without corruption, so reconcile has
 
132
            # nothing to do here
 
133
            expected_inconsistent_parents = 0
 
134
        else:
 
135
            expected_inconsistent_parents = 1
 
136
        reconciler = repo.reconcile()
 
137
        # some number of inconsistent parents should have been found
 
138
        self.assertEqual(expected_inconsistent_parents,
 
139
                         reconciler.inconsistent_parents)
133
140
        # and one garbage inventories
134
141
        self.assertEqual(1, reconciler.garbage_inventories)
135
142
        # now the backup should have it but not the current inventory
146
153
 
147
154
    def test_reweave_inventory_preserves_a_revision_with_ghosts(self):
148
155
        d = bzrlib.bzrdir.BzrDir.open('inventory_one_ghost')
149
 
        reconciler = RepoReconciler(d.open_repository())
150
 
        reconciler.reconcile()
 
156
        reconciler = d.open_repository().reconcile()
151
157
        # no inconsistent parents should have been found: 
152
158
        # the lack of a parent for ghost is normal
153
159
        self.assertEqual(0, reconciler.inconsistent_parents)
161
167
    def test_reweave_inventory_fixes_ancestryfor_a_present_ghost(self):
162
168
        d = bzrlib.bzrdir.BzrDir.open('inventory_ghost_present')
163
169
        repo = d.open_repository()
164
 
        self.assertEqual([None, 'ghost'], repo.get_ancestry('ghost'))
165
 
        reconciler = RepoReconciler(repo)
166
 
        reconciler.reconcile()
 
170
        ghost_ancestry = repo.get_ancestry('ghost')
 
171
        if ghost_ancestry == [None, 'the_ghost', 'ghost']:
 
172
            # the repo handles ghosts without corruption, so reconcile has
 
173
            # nothing to do
 
174
            return
 
175
        self.assertEqual([None, 'ghost'], ghost_ancestry)
 
176
        reconciler = repo.reconcile()
167
177
        # one inconsistent parents should have been found : the
168
178
        # available but not reference parent for ghost.
169
179
        self.assertEqual(1, reconciler.inconsistent_parents)