~bzr-pqm/bzr/bzr.dev

2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2006 Canonical Ltd
1570.1.7 by Robert Collins
Replace the slow topo_sort routine with a much faster one for non trivial datasets.
2
#
1570.1.2 by Robert Collins
Import bzrtools' 'fix' command as 'bzr reconcile.'
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1570.1.7 by Robert Collins
Replace the slow topo_sort routine with a much faster one for non trivial datasets.
7
#
1570.1.2 by Robert Collins
Import bzrtools' 'fix' command as 'bzr reconcile.'
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1570.1.7 by Robert Collins
Replace the slow topo_sort routine with a much faster one for non trivial datasets.
12
#
1570.1.2 by Robert Collins
Import bzrtools' 'fix' command as 'bzr reconcile.'
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1570.1.2 by Robert Collins
Import bzrtools' 'fix' command as 'bzr reconcile.'
16
17
"""Black box tests for the reconcile command."""
18
19
4985.1.5 by Vincent Ladeuil
Deploying the new overrideAttr facility further reduces the complexity
20
from bzrlib import (
21
    bzrdir,
22
    inventory,
23
    repository,
24
    tests,
25
    )
26
27
28
class TrivialTest(tests.TestCaseWithTransport):
1570.1.2 by Robert Collins
Import bzrtools' 'fix' command as 'bzr reconcile.'
29
30
    def test_trivial_reconcile(self):
31
        t = bzrdir.BzrDir.create_standalone_workingtree('.')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
32
        (out, err) = self.run_bzr('reconcile')
3010.1.14 by Robert Collins
Handle packs in blackbox.test_reconcile.
33
        if t.branch.repository._reconcile_backsup_inventory:
34
            does_backup_text = "Inventory ok.\n"
35
        else:
36
            does_backup_text = ""
3389.2.8 by John Arbash Meinel
Update some tests to pass with the branch checks.
37
        self.assertEqualDiff(out, "Reconciling branch %s\n"
38
                                  "revision_history ok.\n"
39
                                  "Reconciling repository %s\n"
3010.1.14 by Robert Collins
Handle packs in blackbox.test_reconcile.
40
                                  "%s"
1570.1.8 by Robert Collins
Only reconcile if doing so will perform gc or correct ancestry.
41
                                  "Reconciliation complete.\n" %
3389.2.8 by John Arbash Meinel
Update some tests to pass with the branch checks.
42
                                  (t.branch.base,
43
                                   t.bzrdir.root_transport.base,
3010.1.14 by Robert Collins
Handle packs in blackbox.test_reconcile.
44
                                   does_backup_text))
1570.1.8 by Robert Collins
Only reconcile if doing so will perform gc or correct ancestry.
45
        self.assertEqualDiff(err, "")
46
47
    def test_does_something_reconcile(self):
48
        t = bzrdir.BzrDir.create_standalone_workingtree('.')
49
        # an empty inventory with no revision will trigger reconciliation.
50
        repo = t.branch.repository
4985.1.5 by Vincent Ladeuil
Deploying the new overrideAttr facility further reduces the complexity
51
        inv = inventory.Inventory(revision_id='missing')
1910.2.37 by Aaron Bentley
Handle empty commits, fix test
52
        inv.root.revision='missing'
2592.3.148 by Robert Collins
Remove singly-used call_in_write_group Repository helper method.
53
        repo.lock_write()
54
        repo.start_write_group()
55
        repo.add_inventory('missing', inv, [])
56
        repo.commit_write_group()
57
        repo.unlock()
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
58
        (out, err) = self.run_bzr('reconcile')
3010.1.14 by Robert Collins
Handle packs in blackbox.test_reconcile.
59
        if repo._reconcile_backsup_inventory:
60
            does_backup_text = (
61
                "Backup Inventory created.\n"
62
                "Inventory regenerated.\n")
63
        else:
64
            does_backup_text = ""
3389.2.8 by John Arbash Meinel
Update some tests to pass with the branch checks.
65
        expected = ("Reconciling branch %s\n"
66
                    "revision_history ok.\n"
67
                    "Reconciling repository %s\n"
3010.1.14 by Robert Collins
Handle packs in blackbox.test_reconcile.
68
                    "%s"
69
                    "Reconciliation complete.\n" %
3389.2.8 by John Arbash Meinel
Update some tests to pass with the branch checks.
70
                    (t.branch.base,
71
                     t.bzrdir.root_transport.base,
72
                     does_backup_text))
3010.1.14 by Robert Collins
Handle packs in blackbox.test_reconcile.
73
        self.assertEqualDiff(expected, out)
1570.1.2 by Robert Collins
Import bzrtools' 'fix' command as 'bzr reconcile.'
74
        self.assertEqualDiff(err, "")