~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Robert Collins
  • Date: 2007-07-04 08:08:13 UTC
  • mfrom: (2572 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2587.
  • Revision ID: robertc@robertcollins.net-20070704080813-wzebx0r88fvwj5rq
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 by Canonical Ltd
 
1
# Copyright (C) 2006, 2007 Canonical Ltd
2
2
# Authors: Robert Collins <robert.collins@canonical.com>
3
 
# -*- coding: utf-8 -*-
 
3
#          and others
4
4
#
5
5
# This program is free software; you can redistribute it and/or modify
6
6
# it under the terms of the GNU General Public License as published by
20
20
 
21
21
import os
22
22
 
23
 
import bzrlib
24
 
import bzrlib.bzrdir as bzrdir
25
 
import bzrlib.repository as repository
26
 
from bzrlib.tests import TestCaseWithTransport
27
 
from bzrlib.tests.blackbox import TestUIFactory
 
23
from bzrlib import (
 
24
    bzrdir,
 
25
    repository,
 
26
    ui,
 
27
    )
 
28
from bzrlib.tests import (
 
29
    TestCaseInTempDir,
 
30
    TestCaseWithTransport,
 
31
    TestUIFactory,
 
32
    )
28
33
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
29
34
from bzrlib.transport import get_transport
30
 
import bzrlib.ui as ui
 
35
from bzrlib.repofmt.knitrepo import (
 
36
    RepositoryFormatKnit1,
 
37
    )
31
38
 
32
39
 
33
40
class TestWithUpgradableBranches(TestCaseWithTransport):
35
42
    def setUp(self):
36
43
        super(TestWithUpgradableBranches, self).setUp()
37
44
        self.old_format = bzrdir.BzrDirFormat.get_default_format()
38
 
        self.old_repo_format = \
39
 
            bzrlib.repository.RepositoryFormat.get_default_format()
40
45
        self.old_ui_factory = ui.ui_factory
41
46
        self.addCleanup(self.restoreDefaults)
42
47
 
43
48
        ui.ui_factory = TestUIFactory()
44
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
45
 
        bzrlib.repository.RepositoryFormat.set_default_format(
46
 
            bzrlib.repository.RepositoryFormat7())
47
 
        # FIXME RBC 20060120 we should be able to do this via ui calls only.
48
49
        # setup a format 5 branch we can upgrade from.
49
 
        t = get_transport(self.get_url())
50
 
        t.mkdir('format_5_branch')
51
 
        bzrdir.BzrDirFormat5().initialize(self.get_url('format_5_branch'))
52
 
        bzrdir.BzrDir.create_standalone_workingtree('current_format_branch')
53
 
        d = bzrdir.BzrDir.create('metadir_weave_branch')
54
 
        d.create_repository()
55
 
        d.create_branch()
56
 
        d.create_workingtree()
57
 
        self.run_bzr('checkout',
58
 
                     '--lightweight',
59
 
                     self.get_url('current_format_branch'),
60
 
                     'current_format_checkout')
 
50
        self.make_branch_and_tree('format_5_branch',
 
51
                                  format=bzrdir.BzrDirFormat5())
 
52
 
 
53
        current_tree = self.make_branch_and_tree('current_format_branch',
 
54
                                                 format='default')
 
55
        self.make_branch_and_tree('metadir_weave_branch', format='metaweave')
 
56
        current_tree.branch.create_checkout(
 
57
            self.get_url('current_format_checkout'), lightweight=True)
61
58
 
62
59
    def restoreDefaults(self):
63
 
        bzrdir.BzrDirFormat.set_default_format(self.old_format)
64
 
        bzrlib.repository.RepositoryFormat.set_default_format(
65
 
            self.old_repo_format)
66
60
        ui.ui_factory = self.old_ui_factory
 
61
        bzrdir.BzrDirFormat._set_default_format(self.old_format)
67
62
 
68
63
    def test_readonly_url_error(self):
69
 
        (out, err) = self.run_bzr_captured(
70
 
            ['upgrade', self.get_readonly_url('format_5_branch')], 3)
 
64
        (out, err) = self.run_bzr(
 
65
            ['upgrade', self.get_readonly_url('format_5_branch')], retcode=3)
71
66
        self.assertEqual(out, "")
72
 
        self.assertEqual(err, "bzr: ERROR: Upgrade URL cannot work with readonly URL's.\n")
 
67
        self.assertEqual(err, "bzr: ERROR: Upgrade URL cannot work with readonly URLs.\n")
73
68
 
74
69
    def test_upgrade_up_to_date(self):
75
70
        # 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)
 
71
        (out, err) = self.run_bzr(
 
72
            ['upgrade', 'current_format_branch'], retcode=3)
78
73
        self.assertEqual("", out)
79
74
        self.assertEqualDiff("bzr: ERROR: The branch format Bazaar-NG meta "
80
75
                             "directory, format 1 is already at the most "
84
79
        # when upgrading a checkout, the branch location and a suggestion
85
80
        # to upgrade it should be emitted even if the checkout is up to 
86
81
        # date
87
 
        (out, err) = self.run_bzr_captured(
88
 
            ['upgrade', 'current_format_checkout'], 3)
 
82
        (out, err) = self.run_bzr(
 
83
            ['upgrade', 'current_format_checkout'], retcode=3)
89
84
        self.assertEqual("This is a checkout. The branch (%s) needs to be "
90
85
                         "upgraded separately.\n" 
91
86
                         % get_transport(self.get_url('current_format_branch')).base,
111
106
        # users can force an upgrade to metadir format.
112
107
        url = get_transport(self.get_url('format_5_branch')).base
113
108
        # check --format takes effect
114
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirFormat5())
115
 
        (out, err) = self.run_bzr_captured(
 
109
        bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirFormat5())
 
110
        (out, err) = self.run_bzr(
116
111
            ['upgrade', '--format=metaweave', url])
117
112
        self.assertEqualDiff("""starting upgrade of %s
118
113
making backup of tree history
135
130
        # branch
136
131
        url = get_transport(self.get_url('metadir_weave_branch')).base
137
132
        # check --format takes effect
138
 
        bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirFormat5())
139
 
        (out, err) = self.run_bzr_captured(
 
133
        bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirFormat5())
 
134
        (out, err) = self.run_bzr(
140
135
            ['upgrade', '--format=knit', url])
141
136
        self.assertEqualDiff("""starting upgrade of %s
142
137
making backup of tree history
152
147
        self.assertTrue(isinstance(converted_dir._format,
153
148
                                   bzrdir.BzrDirMetaFormat1))
154
149
        self.assertTrue(isinstance(converted_dir.open_repository()._format,
155
 
                                   repository.RepositoryFormatKnit1))
 
150
                                   RepositoryFormatKnit1))
156
151
 
157
152
    def test_upgrade_repo(self):
158
153
        self.run_bzr('init-repository', '--format=metaweave', 'repo')
188
183
finished
189
184
""" % (url, url, url), out)
190
185
        self.assertEqual('', err)
 
186
 
 
187
 
 
188
class UpgradeRecommendedTests(TestCaseInTempDir):
 
189
 
 
190
    def test_recommend_upgrade_wt4(self):
 
191
        # using a deprecated format gives a warning
 
192
        self.run_bzr('init', '--knit', 'a')
 
193
        out, err = self.run_bzr('status', 'a')
 
194
        self.assertContainsRe(err, 'bzr upgrade .*[/\\\\]a')
 
195
 
 
196
    def test_no_upgrade_recommendation_from_bzrdir(self):
 
197
        # we should only get a recommendation to upgrade when we're accessing
 
198
        # the actual workingtree, not when we only open a bzrdir that contains
 
199
        # an old workngtree
 
200
        self.run_bzr('init', '--knit', 'a')
 
201
        out, err = self.run_bzr('checkout', 'a', 'b')
 
202
        if err.find('upgrade') > -1:
 
203
            self.fail("message shouldn't suggest upgrade:\n%s" % err)