/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

  • Committer: Jelmer Vernooij
  • Date: 2011-03-10 11:50:14 UTC
  • mto: (5582.10.90 weave-plugin)
  • mto: This revision was merged to the branch mainline in revision 5717.
  • Revision ID: jelmer@samba.org-20110310115014-av2k5m3pwklbxigm
Move weave-era BzrDir directories to a separate file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
 
36
36
class TestUpgrade(tests.TestCaseWithTransport):
37
37
 
38
 
    def test_upgrade_simple(self):
39
 
        """Upgrade simple v0.0.4 format to latest format"""
40
 
        eq = self.assertEquals
41
 
        self.build_tree_contents(_upgrade1_template)
42
 
        upgrade.upgrade(u'.')
43
 
        control = bzrdir.BzrDir.open('.')
44
 
        b = control.open_branch()
45
 
        # tsk, peeking under the covers.
46
 
        self.failUnless(
47
 
            isinstance(
48
 
                control._format,
49
 
                bzrdir.BzrDirFormat.get_default_format().__class__))
50
 
        rh = b.revision_history()
51
 
        eq(rh,
52
 
           ['mbp@sourcefrog.net-20051004035611-176b16534b086b3c',
53
 
            'mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd'])
54
 
        rt = b.repository.revision_tree(rh[0])
55
 
        foo_id = 'foo-20051004035605-91e788d1875603ae'
56
 
        rt.lock_read()
57
 
        try:
58
 
            eq(rt.get_file_text(foo_id), 'initial contents\n')
59
 
        finally:
60
 
            rt.unlock()
61
 
        rt = b.repository.revision_tree(rh[1])
62
 
        rt.lock_read()
63
 
        try:
64
 
            eq(rt.get_file_text(foo_id), 'new contents\n')
65
 
        finally:
66
 
            rt.unlock()
67
 
        # check a backup was made:
68
 
        backup_dir = 'backup.bzr.~1~'
69
 
        t = self.get_transport('.')
70
 
        t.stat(backup_dir)
71
 
        t.stat(backup_dir + '/README')
72
 
        t.stat(backup_dir + '/branch-format')
73
 
        t.stat(backup_dir + '/revision-history')
74
 
        t.stat(backup_dir + '/merged-patches')
75
 
        t.stat(backup_dir + '/pending-merged-patches')
76
 
        t.stat(backup_dir + '/pending-merges')
77
 
        t.stat(backup_dir + '/branch-name')
78
 
        t.stat(backup_dir + '/branch-lock')
79
 
        t.stat(backup_dir + '/inventory')
80
 
        t.stat(backup_dir + '/stat-cache')
81
 
        t.stat(backup_dir + '/text-store')
82
 
        t.stat(backup_dir + '/text-store/foo-20051004035611-1591048e9dc7c2d4.gz')
83
 
        t.stat(backup_dir + '/text-store/foo-20051004035756-4081373d897c3453.gz')
84
 
        t.stat(backup_dir + '/inventory-store/')
85
 
        t.stat(backup_dir + '/inventory-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
86
 
        t.stat(backup_dir + '/inventory-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
87
 
        t.stat(backup_dir + '/revision-store/')
88
 
        t.stat(backup_dir + '/revision-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
89
 
        t.stat(backup_dir + '/revision-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
90
 
 
91
 
    def test_upgrade_with_ghosts(self):
92
 
        """Upgrade v0.0.4 tree containing ghost references.
93
 
 
94
 
        That is, some of the parents of revisions mentioned in the branch
95
 
        aren't present in the branch's storage.
96
 
 
97
 
        This shouldn't normally happen in branches created entirely in
98
 
        bzr, but can happen in branches imported from baz and arch, or from
99
 
        other systems, where the importer knows about a revision but not
100
 
        its contents."""
101
 
        eq = self.assertEquals
102
 
        self.build_tree_contents(_ghost_template)
103
 
        upgrade.upgrade(u'.')
104
 
        b = branch.Branch.open(u'.')
105
 
        revision_id = b.revision_history()[1]
106
 
        rev = b.repository.get_revision(revision_id)
107
 
        eq(len(rev.parent_ids), 2)
108
 
        eq(rev.parent_ids[1], 'wibble@wobble-2')
109
 
 
110
 
    def test_upgrade_makes_dir_weaves(self):
111
 
        self.build_tree_contents(_upgrade_dir_template)
112
 
        old_repodir = bzrdir.BzrDir.open_unsupported('.')
113
 
        old_repo_format = old_repodir.open_repository()._format
114
 
        upgrade.upgrade('.')
115
 
        # this is the path to the literal file. As format changes
116
 
        # occur it needs to be updated. FIXME: ask the store for the
117
 
        # path.
118
 
        repo = repository.Repository.open('.')
119
 
        # it should have changed the format
120
 
        self.assertNotEqual(old_repo_format.__class__, repo._format.__class__)
121
 
        # and we should be able to read the names for the file id
122
 
        # 'dir-20051005095101-da1441ea3fa6917a'
123
 
        repo.lock_read()
124
 
        self.addCleanup(repo.unlock)
125
 
        text_keys = repo.texts.keys()
126
 
        dir_keys = [key for key in text_keys if key[0] ==
127
 
                'dir-20051005095101-da1441ea3fa6917a']
128
 
        self.assertNotEqual([], dir_keys)
129
 
 
130
 
    def test_upgrade_to_meta_sets_workingtree_last_revision(self):
131
 
        self.build_tree_contents(_upgrade_dir_template)
132
 
        upgrade.upgrade('.', bzrdir.BzrDirMetaFormat1())
133
 
        tree = workingtree.WorkingTree.open('.')
134
 
        self.assertEqual([tree.branch.revision_history()[-1]],
135
 
            tree.get_parent_ids())
136
 
 
137
 
    def test_upgrade_v6_to_meta_no_workingtree(self):
138
 
        # Some format6 branches do not have checkout files. Upgrading
139
 
        # such a branch to metadir must not setup a working tree.
140
 
        self.build_tree_contents(_upgrade1_template)
141
 
        upgrade.upgrade('.', bzrdir.BzrDirFormat6())
142
 
        t = self.get_transport('.')
143
 
        t.delete_multi(['.bzr/pending-merges', '.bzr/inventory'])
144
 
        self.assertFalse(t.has('.bzr/stat-cache'))
145
 
        # XXX: upgrade fails if a backup.bzr is already present
146
 
        # -- David Allouche 2006-08-11
147
 
        t.delete_tree('backup.bzr.~1~')
148
 
        # At this point, we have a format6 branch without checkout files.
149
 
        upgrade.upgrade('.', bzrdir.BzrDirMetaFormat1())
150
 
        # The upgrade should not have set up a working tree.
151
 
        control = bzrdir.BzrDir.open('.')
152
 
        self.assertFalse(control.has_workingtree())
153
 
        # We have covered the scope of this test, we may as well check that
154
 
        # upgrade has not eaten our data, even if it's a bit redundant with
155
 
        # other tests.
156
 
        self.failUnless(isinstance(control._format, bzrdir.BzrDirMetaFormat1))
157
 
        b = control.open_branch()
158
 
        self.assertEquals(b.revision_history(),
159
 
           ['mbp@sourcefrog.net-20051004035611-176b16534b086b3c',
160
 
            'mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd'])
161
 
 
162
38
    def test_upgrade_rich_root(self):
163
39
        tree = self.make_branch_and_tree('tree', format='rich-root')
164
40
        rev_id = tree.commit('first post')
254
130
            self.failIfExists('tree/.bzr/checkout/' + path)
255
131
 
256
132
 
257
 
_upgrade1_template = \
258
 
     [
259
 
     ('foo', 'new contents\n'),
260
 
     ('.bzr/',),
261
 
     ('.bzr/README',
262
 
      'This is a Bazaar control directory.\n'
263
 
      'Do not change any files in this directory.\n'
264
 
      'See http://bazaar.canonical.com/ for more information about Bazaar.\n'),
265
 
     ('.bzr/branch-format', 'Bazaar-NG branch, format 0.0.4\n'),
266
 
     ('.bzr/revision-history',
267
 
      'mbp@sourcefrog.net-20051004035611-176b16534b086b3c\n'
268
 
      'mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd\n'),
269
 
     ('.bzr/merged-patches', ''),
270
 
     ('.bzr/pending-merged-patches', ''),
271
 
     ('.bzr/branch-name', ''),
272
 
     ('.bzr/branch-lock', ''),
273
 
     ('.bzr/pending-merges', ''),
274
 
     ('.bzr/inventory',
275
 
      '<inventory>\n'
276
 
      '<entry file_id="foo-20051004035605-91e788d1875603ae" kind="file" name="foo" />\n'
277
 
      '</inventory>\n'),
278
 
     ('.bzr/stat-cache',
279
 
      '### bzr hashcache v5\n'
280
 
      'foo// be9f309239729f69a6309e970ef24941d31e042c 13 1128398176 1128398176 303464 770\n'),
281
 
     ('.bzr/text-store/',),
282
 
     ('.bzr/text-store/foo-20051004035611-1591048e9dc7c2d4.gz',
283
 
      '\x1f\x8b\x08\x00[\xfdAC\x02\xff\xcb\xcc\xcb,\xc9L\xccQH\xce\xcf+I\xcd+)\xe6\x02\x00\xdd\xcc\xf90\x11\x00\x00\x00'),
284
 
     ('.bzr/text-store/foo-20051004035756-4081373d897c3453.gz',
285
 
      '\x1f\x8b\x08\x00\xc4\xfdAC\x02\xff\xcbK-WH\xce\xcf+I\xcd+)\xe6\x02\x00g\xc3\xdf\xc9\r\x00\x00\x00'),
286
 
     ('.bzr/inventory-store/',),
287
 
     ('.bzr/inventory-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz',
288
 
      '\x1f\x8b\x08\x00[\xfdAC\x02\xffm\x8f\xcd\n\xc20\x10\x84\xef>E\xc8\xbdt7?M\x02\xad\xaf"\xa1\x99`P[\xa8E\xacOo\x14\x05\x0f\xdef\xe1\xfbv\x98\xbeL7L\xeb\xbcl\xfb]_\xc3\xb2\x89\\\xce8\x944\xc8<\xcf\x8d"\xb2LdH\xdb\x8el\x13\x18\xce\xfb\xc4\xde\xd5SGHq*\xd3\x0b\xad\x8e\x14S\xbc\xe0\xadI\xb1\xe2\xbe\xfe}\xc2\xdc\xb0\rL\xc6#\xa4\xd1\x8d*\x99\x0f}=F\x1e$8G\x9d\xa0\x02\xa1rP9\x01c`FV\xda1qg\x98"\x02}\xa5\xf2\xa8\x95\xec\xa4h\xeb\x80\xf6g\xcd\x13\xb3\x01\xcc\x98\xda\x00\x00\x00'),
289
 
     ('.bzr/inventory-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz',
290
 
      '\x1f\x8b\x08\x00\xc4\xfdAC\x02\xffm\x8f\xc1\n\xc20\x10D\xef~E\xc8\xbd\xb8\x9bM\x9a,\xb4\xfe\x8a\xc4f\x83Am\xa1\x16\xb1~\xbdQ\x14<x\x9b\x81y3LW\xc6\x9b\x8c\xcb4\xaf\xbbMW\xc5\xbc\xaa\\\xce\xb2/\xa9\xd7y\x9a\x1a\x03\xe0\x10\xc0\x02\xb9\x16\\\xc3(>\x84\x84\xc1WKQ\xb4:\x95\xf1\x15\xad\x8cVc\xbc\xc8\x1b\xd3j\x91\xfb\xf2\xaf\xa4r\x8d\x85\x80\xe4)\x05\xf6\x03YG\x9f\xf4\xf5\x18\xb1\xd7\x07\xe1L\xc0\x86\xd8\x1b\xce-\xc7\xb6:a\x0f\x92\x8de\x8b\x89P\xc0\x9a\xe1\x0b\x95G\x9d\xc4\xda\xb1\xad\x07\xb6?o\x9e\xb5\xff\xf0\xf9\xda\x00\x00\x00'),
291
 
     ('.bzr/revision-store/',),
292
 
     ('.bzr/revision-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz',
293
 
      '\x1f\x8b\x08\x00[\xfdAC\x02\xff\x9d\x8eKj\xc30\x14E\xe7^\x85\xd0 \xb3$\xefI\xd1\x8f\xd8\xa6\x1b(t\x07E?\xbb\x82H\n\xb2\x1ahW\xdfB1\x14:\xeb\xf4r\xee\xbdgl\xf1\x91\xb6T\x0b\xf15\xe7\xd4{l\x13}\xb6\xad\xa7B^j\xbd\x91\xc3\xad_\xb3\xbb?m\xf5\xbd\xf9\xb8\xb4\xba\x9eJ\xec\x87\xb5_)I\xe5\x11K\xaf\xed\xe35\x85\x89\xfe\xa5\x8e\x0c@ \xc0\x05\xb8\x90\x88GT\xd2\xa1\x14\xfc\xe2@K\xc7\xfd\xef\x85\xed\xcd\xe2D\x95\x8d\x1a\xa47<\x02c2\xb0 \xbc\xd0\x8ay\xa3\xbcp\x8a\x83\x12A3\xb7XJv\xef\x7f_\xf7\x94\xe3\xd6m\xbeO\x14\x91in4*<\x812\x88\xc60\xfc\x01>k\x89\x13\xe5\x12\x00\xe8<\x8c\xdf\x8d\xcd\xaeq\xb6!\x90\xa5\xd6\xf1\xbc\x07\xc3x\xde\x85\xe6\xe1\x0b\xc8\x8a\x98\x03T\x01\x00\x00'),
294
 
     ('.bzr/revision-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz',
295
 
      '\x1f\x8b\x08\x00\xc4\xfdAC\x02\xff\x9d\x90Kj\x031\x0c\x86\xf79\xc5\xe0Ev\xe9\xc8o\x9b\xcc\x84^\xa0\xd0\x1b\x14\xbf&5d\xec`\xbb\x81\xf6\xf45\x84\xa4\x81\xaeZ\xa1\x85\x84^\xdf\xaf\xa9\x84K\xac1\xa7\xc1\xe5u\x8d\xad\x852\xa3\x17SZL\xc3k\xce\xa7a{j\xfb\xd5\x9e\x9fk\xfe(.,%\x1f\x9fRh\xdbc\xdb\xa3!\xa6KH-\x97\xcf\xb7\xe8g\xf4\xbbkG\x008\x06`@\xb9\xe4bG(_\x88\x95\xde\xf9n\xca\xfb\xc7\r\xf5\xdd\xe0\x19\xa9\x85)\x81\xf5"\xbd\x04j\xb8\x02b\xa8W\\\x0b\xc9\x14\xf4\xbc\xbb\xd7\xd6H4\xdc\xb8\xff}\xba\xc55\xd4f\xd6\xf3\x8c0&\x8ajE\xa4x\xe2@\xa5\xa6\x9a\xf3k\xc3WNaFT\x00\x00:l\xa6>Q\xcd1\x1cjp9\xf9;\xc34\xde\n\x9b\xe9lJWT{t\',a\xf9\x0b\xae\xc0x\x87\xa5\xb0Xp\xca,(a\xa9{\xd0{}\xd4\x12\x04(\xc5\xbb$\xc5$V\xceaI\x19\x01\xa2\x1dh\xed\x82d\x8c.\xccr@\xc3\xd8Q\xc6\x1f\xaa\xf1\xb6\xe8\xb0\xf9\x06QR\r\xf9\xfc\x01\x00\x00')]
296
 
 
297
 
 
298
 
_ghost_template = [
299
 
    ( './foo',
300
 
        'hello\n'
301
 
    ),
302
 
    ( './.bzr/', ),
303
 
    ( './.bzr/README',
304
 
      'This is a Bazaar control directory.\n'
305
 
      'Do not change any files in this directory.\n'
306
 
      'See http://bazaar.canonical.com/ for more information about Bazaar.\n'
307
 
    ),
308
 
    ( './.bzr/branch-format',
309
 
        'Bazaar-NG branch, format 0.0.4\n'
310
 
    ),
311
 
    ( './.bzr/branch-lock',
312
 
        ''
313
 
    ),
314
 
    ( './.bzr/branch-name',
315
 
        ''
316
 
    ),
317
 
    ( './.bzr/inventory',
318
 
        '<inventory>\n'
319
 
        '<entry file_id="foo-20051004104918-0379cb7c76354cde" kind="file" name="foo" />\n'
320
 
        '</inventory>\n'
321
 
    ),
322
 
    ( './.bzr/merged-patches',
323
 
        ''
324
 
    ),
325
 
    ( './.bzr/pending-merged-patches',
326
 
        ''
327
 
    ),
328
 
    ( './.bzr/pending-merges',
329
 
        ''
330
 
    ),
331
 
    ( './.bzr/revision-history',
332
 
        'mbp@sourcefrog.net-20051004104921-a98be2278dd30b7b\n'
333
 
        'mbp@sourcefrog.net-20051004104937-c9b7a7bfcc0bb22d\n'
334
 
    ),
335
 
    ( './.bzr/stat-cache',
336
 
        '### bzr hashcache v5\n'
337
 
        'foo// f572d396fae9206628714fb2ce00f72e94f2258f 6 1128422956 1128422956 306900 770\n'
338
 
    ),
339
 
    ( './.bzr/text-store/', ),
340
 
    ( './.bzr/text-store/foo-20051004104921-8de8118a71be45ba.gz',
341
 
        '\x1f\x8b\x08\x081^BC\x00\x03foo-20051004104921-8de8118a71be45ba\x00\xcbH\xcd\xc9\xc9\xe7\x02\x00 0:6\x06\x00\x00\x00'
342
 
    ),
343
 
    ( './.bzr/inventory-store/', ),
344
 
    ( './.bzr/inventory-store/mbp@sourcefrog.net-20051004104921-a98be2278dd30b7b.gz',
345
 
        '\x1f\x8b\x08\x081^BC\x00\x03mbp@sourcefrog.net-20051004104921-a98be2278dd30b7b\x00m\x8f\xcb\n'
346
 
        '\xc20\x10E\xf7~E\xc8\xbe83\xcd\x13\xaa\xbf"yL0\xa8-\xd4"\xd6\xaf7\x8a\x82\x0bw\xb38\xe7\xde;C\x1do<.\xd3\xbc\xee7C;\xe6U\x94z\xe6C\xcd;Y\xa6\xa9#\x00\x8d\x00\n'
347
 
        'Ayt\x1d\xf4\xd6\xa7h\x935\xbdV)\xb3\x14\xa7:\xbe\xd0\xe6H1\x86\x0b\xbf5)\x16\xbe/\x7fC\x08;\x97\xd9!\xba`1\xb2\xd21|\xe8\xeb1`\xe3\xb5\xa5\xdc{S\x02{\x02c\xc8YT%Rb\x80b\x89\xbd*D\xda\x95\xafT\x1f\xad\xd2H\xb1m\xfb\xb7?\xcf<\x01W}\xb5\x8b\xd9\x00\x00\x00'
348
 
    ),
349
 
    ( './.bzr/inventory-store/mbp@sourcefrog.net-20051004104937-c9b7a7bfcc0bb22d.gz',
350
 
        '\x1f\x8b\x08\x08A^BC\x00\x03mbp@sourcefrog.net-20051004104937-c9b7a7bfcc0bb22d\x00m\x8f\xcb\n'
351
 
        '\xc20\x10E\xf7~E\xc8\xbe83\xcd\x13\xaa\xbf"yL0\xa8-\xd4"\xd6\xaf7\x8a\x82\x0bw\xb38\xe7\xde;C\x1do<.\xd3\xbc\xee7C;\xe6U\x94z\xe6C\xcd;Y\xa6\xa9#\x00\x8d\x00\n'
352
 
        'Ayt\x1d\xf4\xd6\xa7h\x935\xbdV)\xb3\x14\xa7:\xbe\xd0\xe6H1\x86\x0b\xbf5)\x16\xbe/\x7fC\x08;\x97\xd9!\xba`1\xb2\xd21|\xe8\xeb1`\xe3\xb5\xa5\xdc{S\x02{\x02c\xc8YT%Rb\x80b\x89\xbd*D\xda\x95\xafT\x1f\xad\xd2H\xb1m\xfb\xb7?\xcf<\x01W}\xb5\x8b\xd9\x00\x00\x00'
353
 
    ),
354
 
    ( './.bzr/revision-store/', ),
355
 
    ( './.bzr/revision-store/mbp@sourcefrog.net-20051004104921-a98be2278dd30b7b.gz',
356
 
        '\x1f\x8b\x08\x081^BC\x00\x03mbp@sourcefrog.net-20051004104921-a98be2278dd30b7b\x00\x9d\x8eMj\xc30\x14\x84\xf7>\x85\xd0"\xbb$\xef\xc9\xb6,\x11\xdb\xf4\x02\x85\xde\xa0\xe8\xe7\xd9\x11\xc4R\x90\xd4@{\xfa\x06\x8a\xa1\xd0]\x97\x03\xdf\xcc|c\xa6G(!E\xe6\xd2\xb6\x85Z)O\xfc\xd5\xe4\x1a"{K\xe9\xc6\x0e\xb7z\xd9\xec\xfd\xa5\xa4\x8f\xech\xc9i=E\xaa\x87\xb5^8\x0b\xf1A\xb1\xa6\xfc\xf9\x1e\xfc\xc4\xffRG\x01\xd0#@\x87\xd0i\x81G\xa3\x95%!\x06\xe5}\x0bv\xb0\xbf\x17\xca\xd5\xe0\xc4-\xa0\xb1\x8b\xb6`\xc0I\xa4\xc5\xf4\x9el\xef\x95v [\x94\xcf\x8e\xd5\xcay\xe4l\xf7\xfe\xf7u\r'
357
 
        '\x1b\x95j\xb6\xfb\xc4\x11\x85\xea\x84\xd0\x12O\x03t\x83D\xad\xc4\x0f\xf0\x95"M\xbc\x95\x00\xc0\xe7f|6\x8aYi^B.u<\xef\xb1\x19\xcf\xbb\xce\xdc|\x038=\xc7\xe6R\x01\x00\x00'
358
 
    ),
359
 
    ( './.bzr/revision-store/mbp@sourcefrog.net-20051004104937-c9b7a7bfcc0bb22d.gz',
360
 
        '\x1f\x8b\x08\x08A^BC\x00\x03mbp@sourcefrog.net-20051004104937-c9b7a7bfcc0bb22d\x00\x9d\x90\xc1j\xc30\x0c\x86\xef}\n'
361
 
        "\xe3Coie'\xb1c\x9a\x94\xbe\xc0`o0,[N\x03M\\\x1c\xafe{\xfae\x94n\x85\xc1`;Y\x88O\xd2\xff\xb9Mt\x19\xe6!N\xcc\xc5q\x1cr\xa6\xd4\xf1'\x9b\xf20\xb1\xe7\x18Ol}\xca\xbb\x11\xcf\x879\xbe&G!\xc5~3Q^\xf7y\xc7\xd90]h\xca1\xbd\xbd\x0c\xbe\xe3?\xa9B\x02\xd4\x02\xa0\x12P\x99R\x17\xce\xa0\xb6\x1a\x83s\x80(\xa5\x7f\xdc0\x1f\xad\xe88\x82\xb0\x18\x0c\x82\x05\xa7\x04\x05[{\xc2\xda7\xc6\x81*\x85B\x8dh\x1a\xe7\x05g\xf7\xdc\xff>\x9d\x87\x91\xe6l\xc7s\xc7\x85\x90M%\xa5\xd1z#\x85\xa8\x9b\x1a\xaa\xfa\x06\xbc\xc7\x89:^*\x00\xe0\xfbU\xbbL\xcc\xb6\xa7\xfdH\xa9'\x16\x03\xeb\x8fq\xce\xed\xf6\xde_\xb5g\x9b\x16\xa1y\xa9\xbe\x02&\n"
362
 
        '\x7fJ+EaM\x83$\xa5n\xbc/a\x91~\xd0\xbd\xfd\x135\n'
363
 
        '\xd0\x9a`\x0c*W\x1aR\xc1\x94du\x08(\t\xb0\x91\xdeZ\xa3\x9cU\x9cm\x7f\x8dr\x1d\x10Ot\xb8\xc6\xcf\xa7\x907|\xfb-\xb1\xbd\xd3\xfb\xd5\x07\xeeD\xee\x08*\x02\x00\x00'
364
 
    ),
365
 
]
366
 
 
367
 
_upgrade_dir_template = [
368
 
    ( './.bzr/', ),
369
 
    ( './.bzr/README',
370
 
      'This is a Bazaar control directory.\n'
371
 
      'Do not change any files in this directory.\n'
372
 
      'See http://bazaar.canonical.com/ for more information about Bazaar.\n'
373
 
    ),
374
 
    ( './.bzr/branch-format',
375
 
        'Bazaar-NG branch, format 0.0.4\n'
376
 
    ),
377
 
    ( './.bzr/branch-lock',
378
 
        ''
379
 
    ),
380
 
    ( './.bzr/branch-name',
381
 
        ''
382
 
    ),
383
 
    ( './.bzr/inventory',
384
 
        '<inventory>\n'
385
 
        '<entry file_id="dir-20051005095101-da1441ea3fa6917a" kind="directory" name="dir" />\n'
386
 
        '</inventory>\n'
387
 
    ),
388
 
    ( './.bzr/merged-patches',
389
 
        ''
390
 
    ),
391
 
    ( './.bzr/pending-merged-patches',
392
 
        ''
393
 
    ),
394
 
    ( './.bzr/pending-merges',
395
 
        ''
396
 
    ),
397
 
    ( './.bzr/revision-history',
398
 
        'robertc@robertcollins.net-20051005095108-6065fbd8e7d8617e\n'
399
 
    ),
400
 
    ( './.bzr/stat-cache',
401
 
        '### bzr hashcache v5\n'
402
 
    ),
403
 
    ( './.bzr/text-store/', ),
404
 
    ( './.bzr/inventory-store/', ),
405
 
    ( './.bzr/inventory-store/robertc@robertcollins.net-20051005095108-6065fbd8e7d8617e.gz',
406
 
        '\x1f\x8b\x08\x00\x0c\xa2CC\x02\xff\xb3\xc9\xcc+K\xcd+\xc9/\xaa\xb4\xe3\xb2\x012\x8a*\x15\xd22sR\xe33Sl\x95R2\x8bt\x8d\x0c\x0cL\r'
407
 
        "\x81\xd8\xc0\x12H\x19\xea\xa6$\x1a\x9a\x98\x18\xa6&\x1a\xa7%\x9aY\x1a\x9a'*)dg\xe6A\x94\xa6&\x83LQR\xc8K\xccM\x05\x0b()\xe8\x03\xcd\xd4G\xb2\x00\x00\xc2<\x94\xb1m\x00\x00\x00"
408
 
    ),
409
 
    ( './.bzr/revision-store/', ),
410
 
    ( './.bzr/revision-store/robertc@robertcollins.net-20051005095108-6065fbd8e7d8617e.gz',
411
 
        '\x1f\x8b\x08\x00\x0c\xa2CC\x02\xff\xa5OKj\xc30\x14\xdc\xfb\x14B\x8b\xec\x92<I\xd6\xc7\xc42\x85\xde\xa0\x17(\xb6\xf4\x9c\n'
412
 
        'l\xa9H"\x90\x9c\xbe\xa6\xa9\xa1\x9b\xae\xbax\x0c\xcc\xe71\xd3g\xbc\x85\x12R$.\xadk\xa8\x15\xb3\xa5oi\xc2\\\xc9kZ\x96\x10\x0b9,\xf5\x92\xbf)\xf7\xf2\x83O\xe5\x14\xb1\x1e\xae\xf5BI\x887\x8c5\xe5\xfb{\xf0\x96\xfei>r\x00\xc9\xb6\x83n\x03sT\xa0\xe4<y\x83\xda\x1b\xc54\xfe~T>Ff\xe9\xcc:\xdd\x8e\xa6E\xc7@\xa2\x82I\xaaNL\xbas\\313)\x00\xb9\xe6\xe0(\xd9\x87\xfc\xb7A\r'
413
 
        "+\x96:\xae\x9f\x962\xc6\x8d\x04i\x949\x01\x97R\xb7\x1d\x17O\xc3#E\xb4T(\x00\xa0C\xd3o\x892^q\x18\xbd'>\xe4\xfe\xbc\x13M\x7f\xde{\r"
414
 
        '\xcd\x17\x85\xea\xba\x03l\x01\x00\x00'
415
 
    ),
416
 
    ( './dir/', ),
417
 
]
418
 
 
419
 
 
420
133
class TestSmartUpgrade(tests.TestCaseWithTransport):
421
134
 
422
135
    from_format = bzrdir.format_registry.make_bzrdir("pack-0.92")