~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_upgrade.py

  • Committer: Martin Pool
  • Date: 2006-02-22 04:29:54 UTC
  • mfrom: (1566 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1569.
  • Revision ID: mbp@sourcefrog.net-20060222042954-60333f08dd56a646
[merge] from bzr.dev before integration
Fix undefined ordering in sign_my_revisions breaking tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
import os
22
22
 
23
 
from bzrlib.branch import Branch, BzrBranchFormat5
 
23
import bzrlib.bzrdir as bzrdir
24
24
from bzrlib.tests import TestCaseWithTransport
25
25
from bzrlib.transport import get_transport
26
 
 
27
 
 
28
 
class TestUpgrade(TestCaseWithTransport):
 
26
import bzrlib.ui as ui
 
27
 
 
28
 
 
29
class TestUIFactory(ui.UIFactory):
 
30
    """A UI Factory which never captures its output.
 
31
    """
 
32
 
 
33
    def note(self, fmt_string, *args, **kwargs):
 
34
        """See progress.ProgressBar.note()."""
 
35
        print fmt_string % args
 
36
 
 
37
    def progress_bar(self):
 
38
        return self
 
39
        
 
40
    def update(self, message, count, total):
 
41
        """See progress.ProgressBar.update()."""
 
42
 
 
43
 
 
44
class TestWithUpgradableBranches(TestCaseWithTransport):
29
45
 
30
46
    def setUp(self):
31
 
        super(TestUpgrade, self).setUp()
 
47
        super(TestWithUpgradableBranches, self).setUp()
 
48
        self.old_format = bzrdir.BzrDirFormat.get_default_format()
 
49
        self.old_ui_factory = ui.ui_factory
 
50
        self.addCleanup(self.restoreDefaults)
 
51
 
 
52
        ui.ui_factory = TestUIFactory()
 
53
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
32
54
        # FIXME RBC 20060120 we should be able to do this via ui calls only.
33
55
        # setup a format 5 branch we can upgrade from.
34
56
        t = get_transport(self.get_url())
35
 
        t.mkdir('old_branch')
36
 
        BzrBranchFormat5().initialize(self.get_url('old_branch'))
 
57
        t.mkdir('format_5_branch')
 
58
        bzrdir.BzrDirFormat5().initialize(self.get_url('format_5_branch'))
 
59
        bzrdir.BzrDir.create_standalone_workingtree('current_format_branch')
 
60
        self.run_bzr('checkout',
 
61
                     self.get_url('current_format_branch'),
 
62
                     'current_format_checkout')
 
63
 
 
64
    def restoreDefaults(self):
 
65
        bzrdir.BzrDirFormat.set_default_format(self.old_format)
 
66
        ui.ui_factory = self.old_ui_factory
37
67
 
38
68
    def test_readonly_url_error(self):
39
69
        (out, err) = self.run_bzr_captured(
40
 
            ['upgrade', self.get_readonly_url('old_branch')], 3)
 
70
            ['upgrade', self.get_readonly_url('format_5_branch')], 3)
41
71
        self.assertEqual(out, "")
42
72
        self.assertEqual(err, "bzr: ERROR: Upgrade URL cannot work with readonly URL's.\n")
 
73
 
 
74
    def test_upgrade_up_to_date(self):
 
75
        # when up to date we should get a message to that effect
 
76
        (out, err) = self.run_bzr_captured(
 
77
            ['upgrade', 'current_format_branch'], 3)
 
78
        self.assertEqual("", out)
 
79
        self.assertEqualDiff("bzr: ERROR: The branch format Bazaar-NG meta "
 
80
                             "directory, format 1 is already at the most "
 
81
                             "recent format.\n", err)
 
82
 
 
83
    def test_upgrade_up_to_date_checkout_warns_branch_left_alone(self):
 
84
        # when upgrading a checkout, the branch location and a suggestion
 
85
        # to upgrade it should be emitted even if the checkout is up to 
 
86
        # date
 
87
        (out, err) = self.run_bzr_captured(
 
88
            ['upgrade', 'current_format_checkout'], 3)
 
89
        self.assertEqual("This is a checkout. The branch (%s) needs to be "
 
90
                         "upgraded separately.\n" 
 
91
                         % get_transport(self.get_url('current_format_branch')).base,
 
92
                         out)
 
93
        self.assertEqualDiff("bzr: ERROR: The branch format Bazaar-NG meta "
 
94
                             "directory, format 1 is already at the most "
 
95
                             "recent format.\n", err)
 
96
 
 
97
    def test_upgrade_checkout(self):
 
98
        # upgrading a checkout should work
 
99
        pass
 
100
 
 
101
    def test_upgrade_repository_scans_branches(self):
 
102
        # we should get individual upgrade notes for each branch even the 
 
103
        # anonymous branch
 
104
        pass
 
105
 
 
106
    def test_ugrade_branch_in_repo(self):
 
107
        # upgrading a branch in a repo should warn about not upgrading the repo
 
108
        pass
 
109
 
 
110
    def test_upgrade_explicit_metaformat(self):
 
111
        # users can force an upgrade to metadir format.
 
112
        url = get_transport(self.get_url('format_5_branch')).base
 
113
        # check --format takes effect
 
114
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirFormat5())
 
115
        (out, err) = self.run_bzr_captured(
 
116
            ['upgrade', '--format=metadir', url])
 
117
        self.assertEqualDiff("""starting upgrade of %s
 
118
making backup of tree history
 
119
%s.bzr has been backed up to %s.bzr.backup
 
120
if conversion fails, you can move this directory back to .bzr
 
121
if it succeeds, you can remove this directory if you wish
 
122
starting upgrade from format 5 to 6
 
123
adding prefixes to weaves
 
124
adding prefixes to revision-store
 
125
starting upgrade from format 6 to metadir
 
126
finished
 
127
""" % (url, url, url), out)
 
128
        self.assertEqualDiff("", err)
 
129
        self.assertTrue(isinstance(
 
130
            bzrdir.BzrDir.open(self.get_url('format_5_branch'))._format,
 
131
            bzrdir.BzrDirMetaFormat1))