~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Robert Collins
  • Date: 2006-05-02 11:12:07 UTC
  • mto: (1692.4.1 integration)
  • mto: This revision was merged to the branch mainline in revision 1694.
  • Revision ID: robertc@robertcollins.net-20060502111207-e4ff704e86662870
* Repository.reconcile now takes a thorough keyword parameter to allow
  requesting an indepth reconciliation, rather than just a data-loss 
  check. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2006 by Canonical Ltd
 
2
# -*- coding: utf-8 -*-
 
3
 
 
4
# This program is free software; you can redistribute it and/or modify
 
5
# it under the terms of the GNU General Public License as published by
 
6
# the Free Software Foundation; either version 2 of the License, or
 
7
# (at your option) any later version.
 
8
 
 
9
# This program is distributed in the hope that it will be useful,
 
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
# GNU General Public License for more details.
 
13
 
 
14
# You should have received a copy of the GNU General Public License
 
15
# along with this program; if not, write to the Free Software
 
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
17
 
 
18
 
 
19
"""Tests for the info command of bzr."""
 
20
 
 
21
 
 
22
import bzrlib
 
23
 
 
24
 
 
25
from bzrlib.osutils import format_date
 
26
from bzrlib.tests import TestSkipped
 
27
from bzrlib.tests.blackbox import ExternalBase
 
28
 
 
29
 
 
30
class TestInfo(ExternalBase):
 
31
 
 
32
    def test_info_standalone(self):
 
33
        transport = self.get_transport()
 
34
 
 
35
        # Create initial standalone branch
 
36
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
37
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirFormat6())
 
38
        tree1 = self.make_branch_and_tree('standalone')
 
39
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
40
        self.build_tree(['standalone/a'])
 
41
        tree1.add('a')
 
42
        branch1 = tree1.branch
 
43
        out, err = self.runbzr('info standalone')
 
44
        self.assertEqualDiff(
 
45
"""Location:
 
46
         branch root: %s
 
47
 
 
48
Format:
 
49
       control: All-in-one format 6
 
50
  working tree: Working tree format 2
 
51
        branch: Branch format 4
 
52
    repository: Weave repository format 6
 
53
 
 
54
In the working tree:
 
55
         0 unchanged
 
56
         0 modified
 
57
         1 added
 
58
         0 removed
 
59
         0 renamed
 
60
         0 unknown
 
61
         0 ignored
 
62
         0 versioned subdirectories
 
63
 
 
64
Branch history:
 
65
         0 revisions
 
66
 
 
67
Revision store:
 
68
         0 revisions
 
69
         0 KiB
 
70
""" % branch1.bzrdir.root_transport.base, out)
 
71
        self.assertEqual('', err)
 
72
        tree1.commit('commit one')
 
73
        rev = branch1.repository.get_revision(branch1.revision_history()[0])
 
74
        datestring_first = format_date(rev.timestamp, rev.timezone)
 
75
 
 
76
        # Branch standalone with push location
 
77
        branch2 = branch1.bzrdir.sprout('branch').open_branch()
 
78
        branch2.set_push_location(branch1.bzrdir.root_transport.base)
 
79
        out, err = self.runbzr('info branch --verbose')
 
80
        self.assertEqualDiff(
 
81
"""Location:
 
82
         branch root: %s
 
83
       parent branch: %s
 
84
      push to branch: %s
 
85
 
 
86
Format:
 
87
       control: All-in-one format 6
 
88
  working tree: Working tree format 2
 
89
        branch: Branch format 4
 
90
    repository: Weave repository format 6
 
91
 
 
92
In the working tree:
 
93
         1 unchanged
 
94
         0 modified
 
95
         0 added
 
96
         0 removed
 
97
         0 renamed
 
98
         0 unknown
 
99
         0 ignored
 
100
         0 versioned subdirectories
 
101
 
 
102
Branch history:
 
103
         1 revision
 
104
         1 committer
 
105
         0 days old
 
106
   first revision: %s
 
107
  latest revision: %s
 
108
 
 
109
Revision store:
 
110
         1 revision
 
111
         0 KiB
 
112
""" % (branch2.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
113
       branch1.bzrdir.root_transport.base,
 
114
       datestring_first, datestring_first), out)
 
115
        self.assertEqual('', err)
 
116
 
 
117
        # Branch and bind to standalone, needs upgrade to metadir
 
118
        # (creates backup as unknown)
 
119
        # XXX: I can't get this to work through API
 
120
        self.runbzr('branch standalone bound')
 
121
        #branch3 = branch1.bzrdir.sprout('bound').open_branch()
 
122
        self.runbzr('upgrade --format=metadir bound')
 
123
        #bzrlib.upgrade.upgrade('bound', 'metadir')
 
124
        branch3 = bzrlib.bzrdir.BzrDir.open('bound').open_branch()
 
125
        branch3.bind(branch1)
 
126
        out, err = self.runbzr('info bound')
 
127
        self.assertEqualDiff(
 
128
"""Location:
 
129
         branch root: %s
 
130
     bound to branch: %s
 
131
       parent branch: %s
 
132
 
 
133
Format:
 
134
       control: Meta directory format 1
 
135
  working tree: Working tree format 3
 
136
        branch: Branch format 5
 
137
    repository: %s
 
138
 
 
139
In the working tree:
 
140
         1 unchanged
 
141
         0 modified
 
142
         0 added
 
143
         0 removed
 
144
         0 renamed
 
145
         1 unknown
 
146
         0 ignored
 
147
         0 versioned subdirectories
 
148
 
 
149
Branch history:
 
150
         1 revision
 
151
         0 days old
 
152
   first revision: %s
 
153
  latest revision: %s
 
154
 
 
155
Revision store:
 
156
         1 revision
 
157
         %d KiB
 
158
""" % (branch3.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
159
       branch1.bzrdir.root_transport.base,
 
160
       branch3.repository._format.get_format_description(),
 
161
       datestring_first, datestring_first,
 
162
       # poking at _revision_store isn't all that clean, but neither is
 
163
       # having the ui test dependent on the exact overhead of a given store.
 
164
       branch3.repository._revision_store.total_size(
 
165
        branch3.repository.get_transaction())[1] / 1024,
 
166
       ), out)
 
167
        self.assertEqual('', err)
 
168
 
 
169
        # Checkout standalone (same as above, but does not have parent set)
 
170
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
171
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
172
        branch4 = bzrlib.bzrdir.BzrDir.create_branch_convenience('checkout')
 
173
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
174
        branch4.bind(branch1)
 
175
        branch4.bzrdir.open_workingtree().update()
 
176
        out, err = self.runbzr('info checkout --verbose')
 
177
        self.assertEqualDiff(
 
178
"""Location:
 
179
         branch root: %s
 
180
     bound to branch: %s
 
181
 
 
182
Format:
 
183
       control: Meta directory format 1
 
184
  working tree: Working tree format 3
 
185
        branch: Branch format 5
 
186
    repository: %s
 
187
 
 
188
In the working tree:
 
189
         1 unchanged
 
190
         0 modified
 
191
         0 added
 
192
         0 removed
 
193
         0 renamed
 
194
         0 unknown
 
195
         0 ignored
 
196
         0 versioned subdirectories
 
197
 
 
198
Branch history:
 
199
         1 revision
 
200
         1 committer
 
201
         0 days old
 
202
   first revision: %s
 
203
  latest revision: %s
 
204
 
 
205
Revision store:
 
206
         1 revision
 
207
         %d KiB
 
208
""" % (branch4.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
209
       branch4.repository._format.get_format_description(),
 
210
       datestring_first, datestring_first,
 
211
       # poking at _revision_store isn't all that clean, but neither is
 
212
       # having the ui test dependent on the exact overhead of a given store.
 
213
       branch4.repository._revision_store.total_size(
 
214
        branch4.repository.get_transaction())[1] / 1024,
 
215
       ), out)
 
216
        self.assertEqual('', err)
 
217
 
 
218
        # Lightweight checkout (same as above, different branch and repository)
 
219
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
220
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
221
        transport.mkdir('lightcheckout')
 
222
        dir5 = bzrlib.bzrdir.BzrDirMetaFormat1().initialize('lightcheckout')
 
223
        bzrlib.branch.BranchReferenceFormat().initialize(dir5, branch1)
 
224
        dir5.create_workingtree()
 
225
        tree5 = dir5.open_workingtree()
 
226
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
227
        branch5 = tree5.branch
 
228
        out, err = self.runbzr('info lightcheckout')
 
229
        self.assertEqualDiff(
 
230
"""Location:
 
231
       checkout root: %s
 
232
  checkout of branch: %s
 
233
 
 
234
Format:
 
235
       control: Meta directory format 1
 
236
  working tree: Working tree format 3
 
237
        branch: Branch format 4
 
238
    repository: Weave repository format 6
 
239
 
 
240
In the working tree:
 
241
         1 unchanged
 
242
         0 modified
 
243
         0 added
 
244
         0 removed
 
245
         0 renamed
 
246
         0 unknown
 
247
         0 ignored
 
248
         0 versioned subdirectories
 
249
 
 
250
Branch history:
 
251
         1 revision
 
252
         0 days old
 
253
   first revision: %s
 
254
  latest revision: %s
 
255
 
 
256
Revision store:
 
257
         1 revision
 
258
         0 KiB
 
259
""" % (tree5.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
260
       datestring_first, datestring_first), out)
 
261
        self.assertEqual('', err)
 
262
 
 
263
        # Update initial standalone branch
 
264
        self.build_tree(['standalone/b'])
 
265
        tree1.add('b')
 
266
        tree1.commit('commit two')
 
267
        rev = branch1.repository.get_revision(branch1.revision_history()[-1])
 
268
        datestring_last = format_date(rev.timestamp, rev.timezone)
 
269
 
 
270
        # Out of date branched standalone branch will not be detected
 
271
        out, err = self.runbzr('info branch')
 
272
        self.assertEqualDiff(
 
273
"""Location:
 
274
         branch root: %s
 
275
       parent branch: %s
 
276
      push to branch: %s
 
277
 
 
278
Format:
 
279
       control: All-in-one format 6
 
280
  working tree: Working tree format 2
 
281
        branch: Branch format 4
 
282
    repository: Weave repository format 6
 
283
 
 
284
In the working tree:
 
285
         1 unchanged
 
286
         0 modified
 
287
         0 added
 
288
         0 removed
 
289
         0 renamed
 
290
         0 unknown
 
291
         0 ignored
 
292
         0 versioned subdirectories
 
293
 
 
294
Branch history:
 
295
         1 revision
 
296
         0 days old
 
297
   first revision: %s
 
298
  latest revision: %s
 
299
 
 
300
Revision store:
 
301
         1 revision
 
302
         0 KiB
 
303
""" % (branch2.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
304
       branch1.bzrdir.root_transport.base,
 
305
       datestring_first, datestring_first), out)
 
306
        self.assertEqual('', err)
 
307
 
 
308
        # Out of date bound branch
 
309
        out, err = self.runbzr('info bound')
 
310
        self.assertEqualDiff(
 
311
"""Location:
 
312
         branch root: %s
 
313
     bound to branch: %s
 
314
       parent branch: %s
 
315
 
 
316
Format:
 
317
       control: Meta directory format 1
 
318
  working tree: Working tree format 3
 
319
        branch: Branch format 5
 
320
    repository: %s
 
321
 
 
322
Branch is out of date: missing 1 revision.
 
323
 
 
324
In the working tree:
 
325
         1 unchanged
 
326
         0 modified
 
327
         0 added
 
328
         0 removed
 
329
         0 renamed
 
330
         1 unknown
 
331
         0 ignored
 
332
         0 versioned subdirectories
 
333
 
 
334
Branch history:
 
335
         1 revision
 
336
         0 days old
 
337
   first revision: %s
 
338
  latest revision: %s
 
339
 
 
340
Revision store:
 
341
         1 revision
 
342
         %d KiB
 
343
""" % (branch3.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
344
       branch1.bzrdir.root_transport.base,
 
345
       branch3.repository._format.get_format_description(),
 
346
       datestring_first, datestring_first,
 
347
       # poking at _revision_store isn't all that clean, but neither is
 
348
       # having the ui test dependent on the exact overhead of a given store.
 
349
       branch3.repository._revision_store.total_size(
 
350
        branch3.repository.get_transaction())[1] / 1024,
 
351
       ), out)
 
352
        self.assertEqual('', err)
 
353
 
 
354
        # Out of date checkout
 
355
        out, err = self.runbzr('info checkout')
 
356
        self.assertEqualDiff(
 
357
"""Location:
 
358
         branch root: %s
 
359
     bound to branch: %s
 
360
 
 
361
Format:
 
362
       control: Meta directory format 1
 
363
  working tree: Working tree format 3
 
364
        branch: Branch format 5
 
365
    repository: %s
 
366
 
 
367
Branch is out of date: missing 1 revision.
 
368
 
 
369
In the working tree:
 
370
         1 unchanged
 
371
         0 modified
 
372
         0 added
 
373
         0 removed
 
374
         0 renamed
 
375
         0 unknown
 
376
         0 ignored
 
377
         0 versioned subdirectories
 
378
 
 
379
Branch history:
 
380
         1 revision
 
381
         0 days old
 
382
   first revision: %s
 
383
  latest revision: %s
 
384
 
 
385
Revision store:
 
386
         1 revision
 
387
         %d KiB
 
388
""" % (branch4.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
389
       branch4.repository._format.get_format_description(),
 
390
       datestring_first, datestring_first,
 
391
       # poking at _revision_store isn't all that clean, but neither is
 
392
       # having the ui test dependent on the exact overhead of a given store.
 
393
       branch4.repository._revision_store.total_size(
 
394
        branch4.repository.get_transaction())[1] / 1024,
 
395
       ), out)
 
396
        self.assertEqual('', err)
 
397
 
 
398
        # Out of date lightweight checkout
 
399
        out, err = self.runbzr('info lightcheckout --verbose')
 
400
        self.assertEqualDiff(
 
401
"""Location:
 
402
       checkout root: %s
 
403
  checkout of branch: %s
 
404
 
 
405
Format:
 
406
       control: Meta directory format 1
 
407
  working tree: Working tree format 3
 
408
        branch: Branch format 4
 
409
    repository: Weave repository format 6
 
410
 
 
411
Working tree is out of date: missing 1 revision.
 
412
 
 
413
In the working tree:
 
414
         1 unchanged
 
415
         0 modified
 
416
         0 added
 
417
         0 removed
 
418
         0 renamed
 
419
         0 unknown
 
420
         0 ignored
 
421
         0 versioned subdirectories
 
422
 
 
423
Branch history:
 
424
         2 revisions
 
425
         1 committer
 
426
         0 days old
 
427
   first revision: %s
 
428
  latest revision: %s
 
429
 
 
430
Revision store:
 
431
         2 revisions
 
432
         0 KiB
 
433
""" % (tree5.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
434
       datestring_first, datestring_last), out)
 
435
        self.assertEqual('', err)
 
436
 
 
437
    def test_info_shared_repository(self):
 
438
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
439
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
440
        transport = self.get_transport()
 
441
 
 
442
        # Create shared repository
 
443
        repo = self.make_repository('repo', shared=True)
 
444
        repo.set_make_working_trees(False)
 
445
        out, err = self.runbzr('info repo')
 
446
        self.assertEqualDiff(
 
447
"""Location:
 
448
   shared repository: %s
 
449
 
 
450
Format:
 
451
       control: Meta directory format 1
 
452
    repository: %s
 
453
 
 
454
Revision store:
 
455
         0 revisions
 
456
         0 KiB
 
457
""" % (repo.bzrdir.root_transport.base, repo._format.get_format_description()),
 
458
            out)
 
459
        self.assertEqual('', err)
 
460
 
 
461
        # Create branch inside shared repository
 
462
        repo.bzrdir.root_transport.mkdir('branch')
 
463
        branch1 = repo.bzrdir.create_branch_convenience('repo/branch')
 
464
        out, err = self.runbzr('info repo/branch')
 
465
        self.assertEqualDiff(
 
466
"""Location:
 
467
         branch root: %s
 
468
   shared repository: %s
 
469
 
 
470
Format:
 
471
       control: Meta directory format 1
 
472
        branch: Branch format 5
 
473
    repository: %s
 
474
 
 
475
Branch history:
 
476
         0 revisions
 
477
 
 
478
Revision store:
 
479
         0 revisions
 
480
         0 KiB
 
481
""" % (branch1.bzrdir.root_transport.base,
 
482
       repo.bzrdir.root_transport.base,
 
483
       repo._format.get_format_description(),
 
484
       ), out)
 
485
        self.assertEqual('', err)
 
486
 
 
487
        # Create lightweight checkout
 
488
        transport.mkdir('tree')
 
489
        transport.mkdir('tree/lightcheckout')
 
490
        dir2 = bzrlib.bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
 
491
        bzrlib.branch.BranchReferenceFormat().initialize(dir2, branch1)
 
492
        dir2.create_workingtree()
 
493
        tree2 = dir2.open_workingtree()
 
494
        branch2 = tree2.branch
 
495
        out, err = self.runbzr('info tree/lightcheckout')
 
496
        self.assertEqualDiff(
 
497
"""Location:
 
498
       checkout root: %s
 
499
  checkout of branch: %s
 
500
   shared repository: %s
 
501
 
 
502
Format:
 
503
       control: Meta directory format 1
 
504
  working tree: Working tree format 3
 
505
        branch: Branch format 5
 
506
    repository: %s
 
507
 
 
508
In the working tree:
 
509
         0 unchanged
 
510
         0 modified
 
511
         0 added
 
512
         0 removed
 
513
         0 renamed
 
514
         0 unknown
 
515
         0 ignored
 
516
         0 versioned subdirectories
 
517
 
 
518
Branch history:
 
519
         0 revisions
 
520
 
 
521
Revision store:
 
522
         0 revisions
 
523
         0 KiB
 
524
""" % (tree2.bzrdir.root_transport.base,
 
525
       branch1.bzrdir.root_transport.base,
 
526
       repo.bzrdir.root_transport.base,
 
527
       repo._format.get_format_description(),
 
528
       ), out)
 
529
        self.assertEqual('', err)
 
530
 
 
531
        # Create normal checkout
 
532
        branch3 = bzrlib.bzrdir.BzrDir.create_branch_convenience('tree/checkout')
 
533
        branch3.bind(branch1)
 
534
        tree3 = branch3.bzrdir.open_workingtree()
 
535
        tree3.update()
 
536
        out, err = self.runbzr('info tree/checkout --verbose')
 
537
        self.assertEqualDiff(
 
538
"""Location:
 
539
         branch root: %s
 
540
     bound to branch: %s
 
541
 
 
542
Format:
 
543
       control: Meta directory format 1
 
544
  working tree: Working tree format 3
 
545
        branch: Branch format 5
 
546
    repository: %s
 
547
 
 
548
In the working tree:
 
549
         0 unchanged
 
550
         0 modified
 
551
         0 added
 
552
         0 removed
 
553
         0 renamed
 
554
         0 unknown
 
555
         0 ignored
 
556
         0 versioned subdirectories
 
557
 
 
558
Branch history:
 
559
         0 revisions
 
560
         0 committers
 
561
 
 
562
Revision store:
 
563
         0 revisions
 
564
         0 KiB
 
565
""" % (branch3.bzrdir.root_transport.base,
 
566
       branch1.bzrdir.root_transport.base,
 
567
       repo._format.get_format_description(),
 
568
       ), out)
 
569
        self.assertEqual('', err)
 
570
 
 
571
        # Update lightweight checkout
 
572
        self.build_tree(['tree/lightcheckout/a'])
 
573
        tree2.add('a')
 
574
        tree2.commit('commit one')
 
575
        rev = repo.get_revision(branch2.revision_history()[0])
 
576
        datestring_first = format_date(rev.timestamp, rev.timezone)
 
577
        out, err = self.runbzr('info tree/lightcheckout --verbose')
 
578
        self.assertEqualDiff(
 
579
"""Location:
 
580
       checkout root: %s
 
581
  checkout of branch: %s
 
582
   shared repository: %s
 
583
 
 
584
Format:
 
585
       control: Meta directory format 1
 
586
  working tree: Working tree format 3
 
587
        branch: Branch format 5
 
588
    repository: %s
 
589
 
 
590
In the working tree:
 
591
         1 unchanged
 
592
         0 modified
 
593
         0 added
 
594
         0 removed
 
595
         0 renamed
 
596
         0 unknown
 
597
         0 ignored
 
598
         0 versioned subdirectories
 
599
 
 
600
Branch history:
 
601
         1 revision
 
602
         1 committer
 
603
         0 days old
 
604
   first revision: %s
 
605
  latest revision: %s
 
606
 
 
607
Revision store:
 
608
         1 revision
 
609
         %d KiB
 
610
""" % (tree2.bzrdir.root_transport.base,
 
611
       branch1.bzrdir.root_transport.base,
 
612
       repo.bzrdir.root_transport.base,
 
613
       repo._format.get_format_description(),
 
614
       datestring_first, datestring_first,
 
615
       # poking at _revision_store isn't all that clean, but neither is
 
616
       # having the ui test dependent on the exact overhead of a given store.
 
617
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
618
       ), out)
 
619
        self.assertEqual('', err)
 
620
 
 
621
        # Out of date checkout
 
622
        out, err = self.runbzr('info tree/checkout')
 
623
        self.assertEqualDiff(
 
624
"""Location:
 
625
         branch root: %s
 
626
     bound to branch: %s
 
627
 
 
628
Format:
 
629
       control: Meta directory format 1
 
630
  working tree: Working tree format 3
 
631
        branch: Branch format 5
 
632
    repository: %s
 
633
 
 
634
Branch is out of date: missing 1 revision.
 
635
 
 
636
In the working tree:
 
637
         0 unchanged
 
638
         0 modified
 
639
         0 added
 
640
         0 removed
 
641
         0 renamed
 
642
         0 unknown
 
643
         0 ignored
 
644
         0 versioned subdirectories
 
645
 
 
646
Branch history:
 
647
         0 revisions
 
648
 
 
649
Revision store:
 
650
         0 revisions
 
651
         0 KiB
 
652
""" % (tree3.bzrdir.root_transport.base,
 
653
       branch1.bzrdir.root_transport.base,
 
654
       repo._format.get_format_description(),
 
655
       ), out)
 
656
        self.assertEqual('', err)
 
657
 
 
658
        # Update checkout
 
659
        tree3.update()
 
660
        self.build_tree(['tree/checkout/b'])
 
661
        tree3.add('b')
 
662
        out, err = self.runbzr('info tree/checkout --verbose')
 
663
        self.assertEqualDiff(
 
664
"""Location:
 
665
         branch root: %s
 
666
     bound to branch: %s
 
667
 
 
668
Format:
 
669
       control: Meta directory format 1
 
670
  working tree: Working tree format 3
 
671
        branch: Branch format 5
 
672
    repository: %s
 
673
 
 
674
In the working tree:
 
675
         1 unchanged
 
676
         0 modified
 
677
         1 added
 
678
         0 removed
 
679
         0 renamed
 
680
         0 unknown
 
681
         0 ignored
 
682
         0 versioned subdirectories
 
683
 
 
684
Branch history:
 
685
         1 revision
 
686
         1 committer
 
687
         0 days old
 
688
   first revision: %s
 
689
  latest revision: %s
 
690
 
 
691
Revision store:
 
692
         1 revision
 
693
         %d KiB
 
694
""" % (tree3.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
695
       repo._format.get_format_description(),
 
696
       datestring_first, datestring_first,
 
697
       # poking at _revision_store isn't all that clean, but neither is
 
698
       # having the ui test dependent on the exact overhead of a given store.
 
699
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
700
       ), out)
 
701
        self.assertEqual('', err)
 
702
        tree3.commit('commit two')
 
703
 
 
704
        # Out of date lightweight checkout
 
705
        rev = repo.get_revision(branch1.revision_history()[-1])
 
706
        datestring_last = format_date(rev.timestamp, rev.timezone)
 
707
        out, err = self.runbzr('info tree/lightcheckout --verbose')
 
708
        self.assertEqualDiff(
 
709
"""Location:
 
710
       checkout root: %s
 
711
  checkout of branch: %s
 
712
   shared repository: %s
 
713
 
 
714
Format:
 
715
       control: Meta directory format 1
 
716
  working tree: Working tree format 3
 
717
        branch: Branch format 5
 
718
    repository: %s
 
719
 
 
720
Working tree is out of date: missing 1 revision.
 
721
 
 
722
In the working tree:
 
723
         1 unchanged
 
724
         0 modified
 
725
         0 added
 
726
         0 removed
 
727
         0 renamed
 
728
         0 unknown
 
729
         0 ignored
 
730
         0 versioned subdirectories
 
731
 
 
732
Branch history:
 
733
         2 revisions
 
734
         1 committer
 
735
         0 days old
 
736
   first revision: %s
 
737
  latest revision: %s
 
738
 
 
739
Revision store:
 
740
         2 revisions
 
741
         %d KiB
 
742
""" % (tree2.bzrdir.root_transport.base,
 
743
       branch1.bzrdir.root_transport.base,
 
744
       repo.bzrdir.root_transport.base,
 
745
       repo._format.get_format_description(),
 
746
       datestring_first, datestring_last,
 
747
       # poking at _revision_store isn't all that clean, but neither is
 
748
       # having the ui test dependent on the exact overhead of a given store.
 
749
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
750
       ), out)
 
751
        self.assertEqual('', err)
 
752
 
 
753
        # Show info about shared branch
 
754
        out, err = self.runbzr('info repo/branch --verbose')
 
755
        self.assertEqualDiff(
 
756
"""Location:
 
757
         branch root: %s
 
758
   shared repository: %s
 
759
 
 
760
Format:
 
761
       control: Meta directory format 1
 
762
        branch: Branch format 5
 
763
    repository: %s
 
764
 
 
765
Branch history:
 
766
         2 revisions
 
767
         1 committer
 
768
         0 days old
 
769
   first revision: %s
 
770
  latest revision: %s
 
771
 
 
772
Revision store:
 
773
         2 revisions
 
774
         %d KiB
 
775
""" % (branch1.bzrdir.root_transport.base,
 
776
       repo.bzrdir.root_transport.base,
 
777
       repo._format.get_format_description(),
 
778
       datestring_first, datestring_last,
 
779
       # poking at _revision_store isn't all that clean, but neither is
 
780
       # having the ui test dependent on the exact overhead of a given store.
 
781
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
782
       ), out)
 
783
        self.assertEqual('', err)
 
784
 
 
785
        # Show info about repository with revisions
 
786
        out, err = self.runbzr('info repo')
 
787
        self.assertEqualDiff(
 
788
"""Location:
 
789
   shared repository: %s
 
790
 
 
791
Format:
 
792
       control: Meta directory format 1
 
793
    repository: %s
 
794
 
 
795
Revision store:
 
796
         2 revisions
 
797
         %d KiB
 
798
""" % (repo.bzrdir.root_transport.base,
 
799
       repo._format.get_format_description(),
 
800
       # poking at _revision_store isn't all that clean, but neither is
 
801
       # having the ui test dependent on the exact overhead of a given store.
 
802
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
803
       ),
 
804
       out)
 
805
        self.assertEqual('', err)
 
806
 
 
807
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
808
 
 
809
    def test_info_shared_repository_with_trees(self):
 
810
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
811
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
812
        transport = self.get_transport()
 
813
 
 
814
        # Create shared repository with working trees
 
815
        repo = self.make_repository('repo', shared=True)
 
816
        repo.set_make_working_trees(True)
 
817
        out, err = self.runbzr('info repo')
 
818
        self.assertEqualDiff(
 
819
"""Location:
 
820
   shared repository: %s
 
821
 
 
822
Format:
 
823
       control: Meta directory format 1
 
824
    repository: %s
 
825
 
 
826
Create working tree for new branches inside the repository.
 
827
 
 
828
Revision store:
 
829
         0 revisions
 
830
         0 KiB
 
831
""" % (repo.bzrdir.root_transport.base,
 
832
       repo._format.get_format_description(),
 
833
       ), out)
 
834
        self.assertEqual('', err)
 
835
 
 
836
        # Create two branches
 
837
        repo.bzrdir.root_transport.mkdir('branch1')
 
838
        branch1 = repo.bzrdir.create_branch_convenience('repo/branch1')
 
839
        branch2 = branch1.bzrdir.sprout('repo/branch2').open_branch()
 
840
 
 
841
        # Empty first branch
 
842
        out, err = self.runbzr('info repo/branch1 --verbose')
 
843
        self.assertEqualDiff(
 
844
"""Location:
 
845
         branch root: %s
 
846
   shared repository: %s
 
847
 
 
848
Format:
 
849
       control: Meta directory format 1
 
850
  working tree: Working tree format 3
 
851
        branch: Branch format 5
 
852
    repository: %s
 
853
 
 
854
In the working tree:
 
855
         0 unchanged
 
856
         0 modified
 
857
         0 added
 
858
         0 removed
 
859
         0 renamed
 
860
         0 unknown
 
861
         0 ignored
 
862
         0 versioned subdirectories
 
863
 
 
864
Branch history:
 
865
         0 revisions
 
866
         0 committers
 
867
 
 
868
Revision store:
 
869
         0 revisions
 
870
         0 KiB
 
871
""" % (branch1.bzrdir.root_transport.base,
 
872
       repo.bzrdir.root_transport.base,
 
873
       repo._format.get_format_description(),
 
874
       ), out)
 
875
        self.assertEqual('', err)
 
876
 
 
877
        # Update first branch
 
878
        self.build_tree(['repo/branch1/a'])
 
879
        tree1 = branch1.bzrdir.open_workingtree()
 
880
        tree1.add('a')
 
881
        tree1.commit('commit one')
 
882
        rev = repo.get_revision(branch1.revision_history()[0])
 
883
        datestring_first = format_date(rev.timestamp, rev.timezone)
 
884
        out, err = self.runbzr('info repo/branch1')
 
885
        self.assertEqualDiff(
 
886
"""Location:
 
887
         branch root: %s
 
888
   shared repository: %s
 
889
 
 
890
Format:
 
891
       control: Meta directory format 1
 
892
  working tree: Working tree format 3
 
893
        branch: Branch format 5
 
894
    repository: %s
 
895
 
 
896
In the working tree:
 
897
         1 unchanged
 
898
         0 modified
 
899
         0 added
 
900
         0 removed
 
901
         0 renamed
 
902
         0 unknown
 
903
         0 ignored
 
904
         0 versioned subdirectories
 
905
 
 
906
Branch history:
 
907
         1 revision
 
908
         0 days old
 
909
   first revision: %s
 
910
  latest revision: %s
 
911
 
 
912
Revision store:
 
913
         1 revision
 
914
         %d KiB
 
915
""" % (branch1.bzrdir.root_transport.base, repo.bzrdir.root_transport.base,
 
916
       repo._format.get_format_description(),
 
917
       datestring_first, datestring_first,
 
918
       # poking at _revision_store isn't all that clean, but neither is
 
919
       # having the ui test dependent on the exact overhead of a given store.
 
920
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
921
       ), out)
 
922
        self.assertEqual('', err)
 
923
 
 
924
        # Out of date second branch
 
925
        out, err = self.runbzr('info repo/branch2 --verbose')
 
926
        self.assertEqualDiff(
 
927
"""Location:
 
928
         branch root: %s
 
929
   shared repository: %s
 
930
       parent branch: %s
 
931
 
 
932
Format:
 
933
       control: Meta directory format 1
 
934
  working tree: Working tree format 3
 
935
        branch: Branch format 5
 
936
    repository: %s
 
937
 
 
938
In the working tree:
 
939
         0 unchanged
 
940
         0 modified
 
941
         0 added
 
942
         0 removed
 
943
         0 renamed
 
944
         0 unknown
 
945
         0 ignored
 
946
         0 versioned subdirectories
 
947
 
 
948
Branch history:
 
949
         0 revisions
 
950
         0 committers
 
951
 
 
952
Revision store:
 
953
         1 revision
 
954
         %d KiB
 
955
""" % (branch2.bzrdir.root_transport.base, repo.bzrdir.root_transport.base,
 
956
       branch1.bzrdir.root_transport.base,
 
957
       repo._format.get_format_description(),
 
958
       # poking at _revision_store isn't all that clean, but neither is
 
959
       # having the ui test dependent on the exact overhead of a given store.
 
960
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
961
       ), out)
 
962
        self.assertEqual('', err)
 
963
 
 
964
        # Update second branch
 
965
        tree2 = branch2.bzrdir.open_workingtree()
 
966
        tree2.pull(branch1)
 
967
        out, err = self.runbzr('info repo/branch2')
 
968
        self.assertEqualDiff(
 
969
"""Location:
 
970
         branch root: %s
 
971
   shared repository: %s
 
972
       parent branch: %s
 
973
 
 
974
Format:
 
975
       control: Meta directory format 1
 
976
  working tree: Working tree format 3
 
977
        branch: Branch format 5
 
978
    repository: %s
 
979
 
 
980
In the working tree:
 
981
         1 unchanged
 
982
         0 modified
 
983
         0 added
 
984
         0 removed
 
985
         0 renamed
 
986
         0 unknown
 
987
         0 ignored
 
988
         0 versioned subdirectories
 
989
 
 
990
Branch history:
 
991
         1 revision
 
992
         0 days old
 
993
   first revision: %s
 
994
  latest revision: %s
 
995
 
 
996
Revision store:
 
997
         1 revision
 
998
         %d KiB
 
999
""" % (branch2.bzrdir.root_transport.base,
 
1000
       repo.bzrdir.root_transport.base,
 
1001
       branch1.bzrdir.root_transport.base,
 
1002
       repo._format.get_format_description(),
 
1003
       datestring_first, datestring_first,
 
1004
       # poking at _revision_store isn't all that clean, but neither is
 
1005
       # having the ui test dependent on the exact overhead of a given store.
 
1006
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
1007
       ), out)
 
1008
        self.assertEqual('', err)
 
1009
 
 
1010
        # Show info about repository with revisions
 
1011
        out, err = self.runbzr('info repo')
 
1012
        self.assertEqualDiff(
 
1013
"""Location:
 
1014
   shared repository: %s
 
1015
 
 
1016
Format:
 
1017
       control: Meta directory format 1
 
1018
    repository: %s
 
1019
 
 
1020
Create working tree for new branches inside the repository.
 
1021
 
 
1022
Revision store:
 
1023
         1 revision
 
1024
         %d KiB
 
1025
""" % (repo.bzrdir.root_transport.base,
 
1026
       repo._format.get_format_description(),
 
1027
       # poking at _revision_store isn't all that clean, but neither is
 
1028
       # having the ui test dependent on the exact overhead of a given store.
 
1029
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
1030
       ),
 
1031
       out)
 
1032
        self.assertEqual('', err)
 
1033
 
 
1034
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)