~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Robert Collins
  • Date: 2007-10-17 09:39:41 UTC
  • mfrom: (2911 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2933.
  • Revision ID: robertc@robertcollins.net-20071017093941-v7d1djrt2617citb
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
"""Tests for reconiliation of repositories."""
 
17
"""Tests for reconciliation of repositories."""
18
18
 
19
19
 
20
20
import bzrlib
21
21
import bzrlib.errors as errors
22
22
from bzrlib.inventory import Inventory
23
23
from bzrlib.reconcile import reconcile, Reconciler
 
24
from bzrlib.repofmt.knitrepo import RepositoryFormatKnit
24
25
from bzrlib.revision import Revision
25
 
from bzrlib.tests import TestSkipped
26
 
from bzrlib.tests.repository_implementations.test_repository import TestCaseWithRepository
 
26
from bzrlib.tests import TestSkipped, TestNotApplicable
 
27
from bzrlib.tests.repository_implementations.helpers import (
 
28
    TestCaseWithBrokenRevisionIndex,
 
29
    )
 
30
from bzrlib.tests.repository_implementations.test_repository import (
 
31
    TestCaseWithRepository,
 
32
    )
27
33
from bzrlib.transport import get_transport
28
34
from bzrlib.uncommit import uncommit
29
 
from bzrlib.workingtree import WorkingTree
30
35
 
31
36
 
32
37
class TestReconcile(TestCaseWithRepository):
374
379
        repo = d.open_repository()
375
380
        self.checkUnreconciled(d, repo.reconcile())
376
381
        self.checkUnreconciled(d, repo.reconcile(thorough=True))
 
382
 
 
383
 
 
384
class TestBadRevisionParents(TestCaseWithBrokenRevisionIndex):
 
385
 
 
386
    def test_aborts_if_bad_parents_in_index(self):
 
387
        """Reconcile refuses to proceed if the revision index is wrong when
 
388
        checked against the revision texts, so that it does not generate broken
 
389
        data.
 
390
 
 
391
        Ideally reconcile would fix this, but until we implement that we just
 
392
        make sure we safely detect this problem.
 
393
        """
 
394
        repo = self.make_repo_with_extra_ghost_index()
 
395
        reconciler = repo.reconcile(thorough=True)
 
396
        self.assertTrue(reconciler.aborted,
 
397
            "reconcile should have aborted due to bad parents.")
 
398
 
 
399
    def test_does_not_abort_on_clean_repo(self):
 
400
        repo = self.make_repository('.')
 
401
        reconciler = repo.reconcile(thorough=True)
 
402
        self.assertFalse(reconciler.aborted,
 
403
            "reconcile should not have aborted on an unbroken repository.")
 
404