~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-05-03 19:49:12 UTC
  • mfrom: (2476.1.1 shared_repo_layouts)
  • Revision ID: pqm@pqm.ubuntu.com-20070503194912-pzlcms91kk2uqfdo
(John Arbash Meinel) Add doc/shared_repository_layouts.txt

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 -*-
4
 
 
 
3
#          and others
 
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
7
7
# the Free Software Foundation; either version 2 of the License, or
8
8
# (at your option) any later version.
9
 
 
 
9
#
10
10
# This program is distributed in the hope that it will be useful,
11
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
13
# GNU General Public License for more details.
14
 
 
 
14
#
15
15
# You should have received a copy of the GNU General Public License
16
16
# along with this program; if not, write to the Free Software
17
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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
64
        (out, err) = self.run_bzr_captured(
70
65
            ['upgrade', self.get_readonly_url('format_5_branch')], 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
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())
 
109
        bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirFormat5())
115
110
        (out, err) = self.run_bzr_captured(
116
111
            ['upgrade', '--format=metaweave', url])
117
112
        self.assertEqualDiff("""starting upgrade of %s
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())
 
133
        bzrdir.BzrDirFormat._set_default_format(bzrdir.BzrDirFormat5())
139
134
        (out, err) = self.run_bzr_captured(
140
135
            ['upgrade', '--format=knit', url])
141
136
        self.assertEqualDiff("""starting upgrade of %s
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)