/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_upgrade.py

First attempt to merge .dev and resolve the conflicts (but tests are 
failing)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 by Canonical Ltd
 
1
# Copyright (C) 2005 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
26
26
import os
27
27
import sys
28
28
 
 
29
from bzrlib import (
 
30
    branch as _mod_branch,
 
31
    bzrdir,
 
32
    progress,
 
33
    repository,
 
34
    workingtree,
 
35
    workingtree_4,
 
36
    )
29
37
import bzrlib.branch
30
38
from bzrlib.branch import Branch
31
 
import bzrlib.bzrdir as bzrdir
32
 
import bzrlib.repository as repository
33
 
from bzrlib.revision import is_ancestor
34
 
from bzrlib.tests import TestCase, TestCaseInTempDir
 
39
from bzrlib.tests import TestCaseWithTransport
35
40
from bzrlib.transport import get_transport
36
41
from bzrlib.upgrade import upgrade
37
 
import bzrlib.workingtree as workingtree
38
 
 
39
 
 
40
 
class TestUpgrade(TestCaseInTempDir):
 
42
 
 
43
 
 
44
class TestUpgrade(TestCaseWithTransport):
41
45
    
42
46
    def test_build_tree(self):
43
47
        """Test tree-building test helper"""
63
67
            'mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd'])
64
68
        rt = b.repository.revision_tree(rh[0])
65
69
        foo_id = 'foo-20051004035605-91e788d1875603ae'
66
 
        eq(rt.get_file_text(foo_id), 'initial contents\n')
 
70
        rt.lock_read()
 
71
        try:
 
72
            eq(rt.get_file_text(foo_id), 'initial contents\n')
 
73
        finally:
 
74
            rt.unlock()
67
75
        rt = b.repository.revision_tree(rh[1])
68
 
        eq(rt.get_file_text(foo_id), 'new contents\n')
 
76
        rt.lock_read()
 
77
        try:
 
78
            eq(rt.get_file_text(foo_id), 'new contents\n')
 
79
        finally:
 
80
            rt.unlock()
69
81
        # check a backup was made:
70
82
        transport = get_transport(b.base)
71
 
        transport.stat('.bzr.backup')
72
 
        transport.stat('.bzr.backup/README')
73
 
        transport.stat('.bzr.backup/branch-format')
74
 
        transport.stat('.bzr.backup/revision-history')
75
 
        transport.stat('.bzr.backup/merged-patches')
76
 
        transport.stat('.bzr.backup/pending-merged-patches')
77
 
        transport.stat('.bzr.backup/pending-merges')
78
 
        transport.stat('.bzr.backup/branch-name')
79
 
        transport.stat('.bzr.backup/branch-lock')
80
 
        transport.stat('.bzr.backup/inventory')
81
 
        transport.stat('.bzr.backup/stat-cache')
82
 
        transport.stat('.bzr.backup/text-store')
83
 
        transport.stat('.bzr.backup/text-store/foo-20051004035611-1591048e9dc7c2d4.gz')
84
 
        transport.stat('.bzr.backup/text-store/foo-20051004035756-4081373d897c3453.gz')
85
 
        transport.stat('.bzr.backup/inventory-store/')
86
 
        transport.stat('.bzr.backup/inventory-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
87
 
        transport.stat('.bzr.backup/inventory-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
88
 
        transport.stat('.bzr.backup/revision-store/')
89
 
        transport.stat('.bzr.backup/revision-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
90
 
        transport.stat('.bzr.backup/revision-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
 
83
        transport.stat('backup.bzr')
 
84
        transport.stat('backup.bzr/README')
 
85
        transport.stat('backup.bzr/branch-format')
 
86
        transport.stat('backup.bzr/revision-history')
 
87
        transport.stat('backup.bzr/merged-patches')
 
88
        transport.stat('backup.bzr/pending-merged-patches')
 
89
        transport.stat('backup.bzr/pending-merges')
 
90
        transport.stat('backup.bzr/branch-name')
 
91
        transport.stat('backup.bzr/branch-lock')
 
92
        transport.stat('backup.bzr/inventory')
 
93
        transport.stat('backup.bzr/stat-cache')
 
94
        transport.stat('backup.bzr/text-store')
 
95
        transport.stat('backup.bzr/text-store/foo-20051004035611-1591048e9dc7c2d4.gz')
 
96
        transport.stat('backup.bzr/text-store/foo-20051004035756-4081373d897c3453.gz')
 
97
        transport.stat('backup.bzr/inventory-store/')
 
98
        transport.stat('backup.bzr/inventory-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
 
99
        transport.stat('backup.bzr/inventory-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
 
100
        transport.stat('backup.bzr/revision-store/')
 
101
        transport.stat('backup.bzr/revision-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
 
102
        transport.stat('backup.bzr/revision-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
91
103
 
92
104
    def test_upgrade_with_ghosts(self):
93
105
        """Upgrade v0.0.4 tree containing ghost references.
121
133
        self.assertNotEqual(old_repo_format.__class__, repo._format.__class__)
122
134
        # and we should be able to read the names for the file id 
123
135
        # 'dir-20051005095101-da1441ea3fa6917a'
124
 
        self.assertNotEqual(
125
 
            [],
126
 
            repo.text_store.get_weave(
127
 
                'dir-20051005095101-da1441ea3fa6917a',
128
 
                repo.get_transaction()))
 
136
        repo.lock_read()
 
137
        self.addCleanup(repo.unlock)
 
138
        text_keys = repo.texts.keys()
 
139
        dir_keys = [key for key in text_keys if key[0] ==
 
140
                'dir-20051005095101-da1441ea3fa6917a']
 
141
        self.assertNotEqual([], dir_keys)
129
142
 
130
143
    def test_upgrade_to_meta_sets_workingtree_last_revision(self):
131
144
        self.build_tree_contents(_upgrade_dir_template)
141
154
        upgrade('.', bzrdir.BzrDirFormat6())
142
155
        transport = get_transport('.')
143
156
        transport.delete_multi(['.bzr/pending-merges', '.bzr/inventory'])
144
 
        assert not transport.has('.bzr/stat-cache')
145
 
        # XXX: upgrade fails if a .bzr.backup is already present
 
157
        self.assertFalse(transport.has('.bzr/stat-cache'))
 
158
        # XXX: upgrade fails if a backup.bzr is already present
146
159
        # -- David Allouche 2006-08-11
147
 
        transport.delete_tree('.bzr.backup')
 
160
        transport.delete_tree('backup.bzr')
148
161
        # At this point, we have a format6 branch without checkout files.
149
162
        upgrade('.', bzrdir.BzrDirMetaFormat1())
150
163
        # The upgrade should not have set up a working tree.
159
172
           ['mbp@sourcefrog.net-20051004035611-176b16534b086b3c',
160
173
            'mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd'])
161
174
 
 
175
    def test_convert_branch5_branch6(self):
 
176
        branch = self.make_branch('branch', format='knit')
 
177
        branch.set_revision_history(['AB', 'CD'])
 
178
        branch.set_parent('file:///EF')
 
179
        branch.set_bound_location('file:///GH')
 
180
        branch.set_push_location('file:///IJ')
 
181
        target = bzrdir.format_registry.make_bzrdir('dirstate-with-subtree')
 
182
        converter = branch.bzrdir._format.get_converter(target)
 
183
        converter.convert(branch.bzrdir, progress.DummyProgress())
 
184
        new_branch = _mod_branch.Branch.open(self.get_url('branch'))
 
185
        self.assertIs(new_branch.__class__, _mod_branch.BzrBranch6)
 
186
        self.assertEqual('CD', new_branch.last_revision())
 
187
        self.assertEqual('file:///EF', new_branch.get_parent())
 
188
        self.assertEqual('file:///GH', new_branch.get_bound_location())
 
189
        branch_config = new_branch.get_config()._get_branch_data_config()
 
190
        self.assertEqual('file:///IJ',
 
191
            branch_config.get_user_option('push_location'))
 
192
 
 
193
        branch2 = self.make_branch('branch2', format='knit')
 
194
        converter = branch2.bzrdir._format.get_converter(target)
 
195
        converter.convert(branch2.bzrdir, progress.DummyProgress())
 
196
        branch2 = _mod_branch.Branch.open(self.get_url('branch'))
 
197
        self.assertIs(branch2.__class__, _mod_branch.BzrBranch6)
 
198
 
 
199
    def test_convert_knit_dirstate_empty(self):
 
200
        # test that asking for an upgrade from knit to dirstate works.
 
201
        tree = self.make_branch_and_tree('tree', format='knit')
 
202
        target = bzrdir.format_registry.make_bzrdir('dirstate')
 
203
        converter = tree.bzrdir._format.get_converter(target)
 
204
        converter.convert(tree.bzrdir, progress.DummyProgress())
 
205
        new_tree = workingtree.WorkingTree.open('tree')
 
206
        self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
 
207
        self.assertEqual('null:', new_tree.last_revision())
 
208
 
 
209
    def test_convert_knit_dirstate_content(self):
 
210
        # smoke test for dirstate conversion: we call dirstate primitives,
 
211
        # and its there that the core logic is tested.
 
212
        tree = self.make_branch_and_tree('tree', format='knit')
 
213
        self.build_tree(['tree/file'])
 
214
        tree.add(['file'], ['file-id'])
 
215
        target = bzrdir.format_registry.make_bzrdir('dirstate')
 
216
        converter = tree.bzrdir._format.get_converter(target)
 
217
        converter.convert(tree.bzrdir, progress.DummyProgress())
 
218
        new_tree = workingtree.WorkingTree.open('tree')
 
219
        self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
 
220
        self.assertEqual('null:', new_tree.last_revision())
 
221
 
 
222
    def test_convert_knit_one_parent_dirstate(self):
 
223
        # test that asking for an upgrade from knit to dirstate works.
 
224
        tree = self.make_branch_and_tree('tree', format='knit')
 
225
        rev_id = tree.commit('first post')
 
226
        target = bzrdir.format_registry.make_bzrdir('dirstate')
 
227
        converter = tree.bzrdir._format.get_converter(target)
 
228
        converter.convert(tree.bzrdir, progress.DummyProgress())
 
229
        new_tree = workingtree.WorkingTree.open('tree')
 
230
        self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
 
231
        self.assertEqual(rev_id, new_tree.last_revision())
 
232
        for path in ['basis-inventory-cache', 'inventory', 'last-revision',
 
233
            'pending-merges', 'stat-cache']:
 
234
            self.failIfExists('tree/.bzr/checkout/' + path)
 
235
 
 
236
    def test_convert_knit_merges_dirstate(self):
 
237
        tree = self.make_branch_and_tree('tree', format='knit')
 
238
        rev_id = tree.commit('first post')
 
239
        merge_tree = tree.bzrdir.sprout('tree2').open_workingtree()
 
240
        rev_id2 = tree.commit('second post')
 
241
        rev_id3 = merge_tree.commit('second merge post')
 
242
        tree.merge_from_branch(merge_tree.branch)
 
243
        target = bzrdir.format_registry.make_bzrdir('dirstate')
 
244
        converter = tree.bzrdir._format.get_converter(target)
 
245
        converter.convert(tree.bzrdir, progress.DummyProgress())
 
246
        new_tree = workingtree.WorkingTree.open('tree')
 
247
        self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
 
248
        self.assertEqual(rev_id2, new_tree.last_revision())
 
249
        self.assertEqual([rev_id2, rev_id3], new_tree.get_parent_ids())
 
250
        for path in ['basis-inventory-cache', 'inventory', 'last-revision',
 
251
            'pending-merges', 'stat-cache']:
 
252
            self.failIfExists('tree/.bzr/checkout/' + path)
 
253
 
162
254
 
163
255
_upgrade1_template = \
164
256
     [
165
257
     ('foo', 'new contents\n'),
166
258
     ('.bzr/',),
167
259
     ('.bzr/README',
168
 
      'This is a Bazaar-NG control directory.\nDo not change any files in this directory.\n'),
 
260
      'This is a Bazaar control directory.\n'
 
261
      'Do not change any files in this directory.\n'
 
262
      'See http://bazaar-vcs.org/ for more information about Bazaar.\n'),
169
263
     ('.bzr/branch-format', 'Bazaar-NG branch, format 0.0.4\n'),
170
264
     ('.bzr/revision-history',
171
265
      'mbp@sourcefrog.net-20051004035611-176b16534b086b3c\n'
205
299
    ),
206
300
    ( './.bzr/', ),
207
301
    ( './.bzr/README',
208
 
        'This is a Bazaar-NG control directory.\n'
209
 
        'Do not change any files in this directory.\n'
 
302
      'This is a Bazaar control directory.\n'
 
303
      'Do not change any files in this directory.\n'
 
304
      'See http://bazaar-vcs.org/ for more information about Bazaar.\n'
210
305
    ),
211
306
    ( './.bzr/branch-format',
212
307
        'Bazaar-NG branch, format 0.0.4\n'
270
365
_upgrade_dir_template = [
271
366
    ( './.bzr/', ),
272
367
    ( './.bzr/README',
273
 
        'This is a Bazaar-NG control directory.\n'
274
 
        'Do not change any files in this directory.\n'
 
368
      'This is a Bazaar control directory.\n'
 
369
      'Do not change any files in this directory.\n'
 
370
      'See http://bazaar-vcs.org/ for more information about Bazaar.\n'
275
371
    ),
276
372
    ( './.bzr/branch-format',
277
373
        'Bazaar-NG branch, format 0.0.4\n'