~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Martin Pool
  • Date: 2006-06-05 18:00:36 UTC
  • mto: This revision was merged to the branch mainline in revision 1752.
  • Revision ID: mbp@sourcefrog.net-20060605180036-04f5d0cea94ed999
clean up test kipple

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_non_existing(self):
 
33
        out, err = self.runbzr('info /i/do/not/exist/', retcode=3)
 
34
        self.assertEqual(out, '')
 
35
        self.assertEqual(err, 'bzr: ERROR: Not a branch: /i/do/not/exist/\n')
 
36
 
 
37
    def test_info_standalone(self):
 
38
        transport = self.get_transport()
 
39
 
 
40
        # Create initial standalone branch
 
41
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
42
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirFormat6())
 
43
        tree1 = self.make_branch_and_tree('standalone')
 
44
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
45
        self.build_tree(['standalone/a'])
 
46
        tree1.add('a')
 
47
        branch1 = tree1.branch
 
48
        out, err = self.runbzr('info standalone')
 
49
        self.assertEqualDiff(
 
50
"""Location:
 
51
  branch root: %s
 
52
 
 
53
Format:
 
54
       control: All-in-one format 6
 
55
  working tree: Working tree format 2
 
56
        branch: Branch format 4
 
57
    repository: Weave repository format 6
 
58
 
 
59
In the working tree:
 
60
         0 unchanged
 
61
         0 modified
 
62
         1 added
 
63
         0 removed
 
64
         0 renamed
 
65
         0 unknown
 
66
         0 ignored
 
67
         0 versioned subdirectories
 
68
 
 
69
Branch history:
 
70
         0 revisions
 
71
 
 
72
Revision store:
 
73
         0 revisions
 
74
         0 KiB
 
75
""" % branch1.bzrdir.root_transport.base, out)
 
76
        self.assertEqual('', err)
 
77
        tree1.commit('commit one')
 
78
        rev = branch1.repository.get_revision(branch1.revision_history()[0])
 
79
        datestring_first = format_date(rev.timestamp, rev.timezone)
 
80
 
 
81
        # Branch standalone with push location
 
82
        branch2 = branch1.bzrdir.sprout('branch').open_branch()
 
83
        branch2.set_push_location(branch1.bzrdir.root_transport.base)
 
84
        out, err = self.runbzr('info branch --verbose')
 
85
        self.assertEqualDiff(
 
86
"""Location:
 
87
  branch root: %s
 
88
 
 
89
Related branches:
 
90
      parent branch: %s
 
91
  publish to branch: %s
 
92
 
 
93
Format:
 
94
       control: All-in-one format 6
 
95
  working tree: Working tree format 2
 
96
        branch: Branch format 4
 
97
    repository: Weave repository format 6
 
98
 
 
99
In the working tree:
 
100
         1 unchanged
 
101
         0 modified
 
102
         0 added
 
103
         0 removed
 
104
         0 renamed
 
105
         0 unknown
 
106
         0 ignored
 
107
         0 versioned subdirectories
 
108
 
 
109
Branch history:
 
110
         1 revision
 
111
         1 committer
 
112
         0 days old
 
113
   first revision: %s
 
114
  latest revision: %s
 
115
 
 
116
Revision store:
 
117
         1 revision
 
118
         %d KiB
 
119
""" % (branch2.bzrdir.root_transport.base,
 
120
       branch1.bzrdir.root_transport.base,
 
121
       branch1.bzrdir.root_transport.base,
 
122
       datestring_first, datestring_first,
 
123
       # poking at _revision_store isn't all that clean, but neither is
 
124
       # having the ui test dependent on the exact overhead of a given store.
 
125
       branch2.repository._revision_store.total_size(
 
126
        branch2.repository.get_transaction())[1] / 1024,
 
127
       ), out)
 
128
        self.assertEqual('', err)
 
129
 
 
130
        # Branch and bind to standalone, needs upgrade to metadir
 
131
        # (creates backup as unknown)
 
132
        # XXX: I can't get this to work through API
 
133
        self.runbzr('branch standalone bound')
 
134
        #branch3 = branch1.bzrdir.sprout('bound').open_branch()
 
135
        self.runbzr('upgrade --format=metaweave bound')
 
136
        #bzrlib.upgrade.upgrade('bound', bzrlib.bzrdir.BzrDirMetaFormat1())
 
137
        branch3 = bzrlib.bzrdir.BzrDir.open('bound').open_branch()
 
138
        branch3.bind(branch1)
 
139
        out, err = self.runbzr('info bound')
 
140
        self.assertEqualDiff(
 
141
"""Location:
 
142
       checkout root: %s
 
143
  checkout of branch: %s
 
144
 
 
145
Related branches:
 
146
  parent branch: %s
 
147
 
 
148
Format:
 
149
       control: Meta directory format 1
 
150
  working tree: Working tree format 3
 
151
        branch: Branch format 5
 
152
    repository: %s
 
153
 
 
154
In the working tree:
 
155
         1 unchanged
 
156
         0 modified
 
157
         0 added
 
158
         0 removed
 
159
         0 renamed
 
160
         1 unknown
 
161
         0 ignored
 
162
         0 versioned subdirectories
 
163
 
 
164
Branch history:
 
165
         1 revision
 
166
         0 days old
 
167
   first revision: %s
 
168
  latest revision: %s
 
169
 
 
170
Revision store:
 
171
         1 revision
 
172
         %d KiB
 
173
""" % (branch3.bzrdir.root_transport.base,
 
174
       branch1.bzrdir.root_transport.base,
 
175
       branch1.bzrdir.root_transport.base,
 
176
       branch3.repository._format.get_format_description(),
 
177
       datestring_first, datestring_first,
 
178
       # poking at _revision_store isn't all that clean, but neither is
 
179
       # having the ui test dependent on the exact overhead of a given store.
 
180
       branch3.repository._revision_store.total_size(
 
181
        branch3.repository.get_transaction())[1] / 1024,
 
182
       ), out)
 
183
        self.assertEqual('', err)
 
184
 
 
185
        # Checkout standalone (same as above, but does not have parent set)
 
186
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
187
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
188
        branch4 = bzrlib.bzrdir.BzrDir.create_branch_convenience('checkout')
 
189
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
190
        branch4.bind(branch1)
 
191
        branch4.bzrdir.open_workingtree().update()
 
192
        out, err = self.runbzr('info checkout --verbose')
 
193
        self.assertEqualDiff(
 
194
"""Location:
 
195
       checkout root: %s
 
196
  checkout of branch: %s
 
197
 
 
198
Format:
 
199
       control: Meta directory format 1
 
200
  working tree: Working tree format 3
 
201
        branch: Branch format 5
 
202
    repository: %s
 
203
 
 
204
In the working tree:
 
205
         1 unchanged
 
206
         0 modified
 
207
         0 added
 
208
         0 removed
 
209
         0 renamed
 
210
         0 unknown
 
211
         0 ignored
 
212
         0 versioned subdirectories
 
213
 
 
214
Branch history:
 
215
         1 revision
 
216
         1 committer
 
217
         0 days old
 
218
   first revision: %s
 
219
  latest revision: %s
 
220
 
 
221
Revision store:
 
222
         1 revision
 
223
         %d KiB
 
224
""" % (branch4.bzrdir.root_transport.base,
 
225
       branch1.bzrdir.root_transport.base,
 
226
       branch4.repository._format.get_format_description(),
 
227
       datestring_first, datestring_first,
 
228
       # poking at _revision_store isn't all that clean, but neither is
 
229
       # having the ui test dependent on the exact overhead of a given store.
 
230
       branch4.repository._revision_store.total_size(
 
231
        branch4.repository.get_transaction())[1] / 1024,
 
232
       ), out)
 
233
        self.assertEqual('', err)
 
234
 
 
235
        # Lightweight checkout (same as above, different branch and repository)
 
236
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
237
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
238
        transport.mkdir('lightcheckout')
 
239
        dir5 = bzrlib.bzrdir.BzrDirMetaFormat1().initialize('lightcheckout')
 
240
        bzrlib.branch.BranchReferenceFormat().initialize(dir5, branch1)
 
241
        dir5.create_workingtree()
 
242
        tree5 = dir5.open_workingtree()
 
243
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
244
        branch5 = tree5.branch
 
245
        out, err = self.runbzr('info lightcheckout')
 
246
        self.assertEqualDiff(
 
247
"""Location:
 
248
  light checkout root: %s
 
249
   checkout of branch: %s
 
250
 
 
251
Format:
 
252
       control: Meta directory format 1
 
253
  working tree: Working tree format 3
 
254
        branch: Branch format 4
 
255
    repository: Weave repository format 6
 
256
 
 
257
In the working tree:
 
258
         1 unchanged
 
259
         0 modified
 
260
         0 added
 
261
         0 removed
 
262
         0 renamed
 
263
         0 unknown
 
264
         0 ignored
 
265
         0 versioned subdirectories
 
266
 
 
267
Branch history:
 
268
         1 revision
 
269
         0 days old
 
270
   first revision: %s
 
271
  latest revision: %s
 
272
 
 
273
Revision store:
 
274
         1 revision
 
275
         0 KiB
 
276
""" % (tree5.bzrdir.root_transport.base,
 
277
       branch1.bzrdir.root_transport.base,
 
278
       datestring_first, datestring_first,
 
279
       ), out)
 
280
        self.assertEqual('', err)
 
281
 
 
282
        # Update initial standalone branch
 
283
        self.build_tree(['standalone/b'])
 
284
        tree1.add('b')
 
285
        tree1.commit('commit two')
 
286
        rev = branch1.repository.get_revision(branch1.revision_history()[-1])
 
287
        datestring_last = format_date(rev.timestamp, rev.timezone)
 
288
 
 
289
        # Out of date branched standalone branch will not be detected
 
290
        out, err = self.runbzr('info branch')
 
291
        self.assertEqualDiff(
 
292
"""Location:
 
293
  branch root: %s
 
294
 
 
295
Related branches:
 
296
      parent branch: %s
 
297
  publish to branch: %s
 
298
 
 
299
Format:
 
300
       control: All-in-one format 6
 
301
  working tree: Working tree format 2
 
302
        branch: Branch format 4
 
303
    repository: Weave repository format 6
 
304
 
 
305
In the working tree:
 
306
         1 unchanged
 
307
         0 modified
 
308
         0 added
 
309
         0 removed
 
310
         0 renamed
 
311
         0 unknown
 
312
         0 ignored
 
313
         0 versioned subdirectories
 
314
 
 
315
Branch history:
 
316
         1 revision
 
317
         0 days old
 
318
   first revision: %s
 
319
  latest revision: %s
 
320
 
 
321
Revision store:
 
322
         1 revision
 
323
         0 KiB
 
324
""" % (branch2.bzrdir.root_transport.base,
 
325
       branch1.bzrdir.root_transport.base,
 
326
       branch1.bzrdir.root_transport.base,
 
327
       datestring_first, datestring_first,
 
328
       ), out)
 
329
        self.assertEqual('', err)
 
330
 
 
331
        # Out of date bound branch
 
332
        out, err = self.runbzr('info bound')
 
333
        self.assertEqualDiff(
 
334
"""Location:
 
335
       checkout root: %s
 
336
  checkout of branch: %s
 
337
 
 
338
Related branches:
 
339
  parent branch: %s
 
340
 
 
341
Format:
 
342
       control: Meta directory format 1
 
343
  working tree: Working tree format 3
 
344
        branch: Branch format 5
 
345
    repository: %s
 
346
 
 
347
Branch is out of date: missing 1 revision.
 
348
 
 
349
In the working tree:
 
350
         1 unchanged
 
351
         0 modified
 
352
         0 added
 
353
         0 removed
 
354
         0 renamed
 
355
         1 unknown
 
356
         0 ignored
 
357
         0 versioned subdirectories
 
358
 
 
359
Branch history:
 
360
         1 revision
 
361
         0 days old
 
362
   first revision: %s
 
363
  latest revision: %s
 
364
 
 
365
Revision store:
 
366
         1 revision
 
367
         %d KiB
 
368
""" % (branch3.bzrdir.root_transport.base,
 
369
       branch1.bzrdir.root_transport.base,
 
370
       branch1.bzrdir.root_transport.base,
 
371
       branch3.repository._format.get_format_description(),
 
372
       datestring_first, datestring_first,
 
373
       # poking at _revision_store isn't all that clean, but neither is
 
374
       # having the ui test dependent on the exact overhead of a given store.
 
375
       branch3.repository._revision_store.total_size(
 
376
        branch3.repository.get_transaction())[1] / 1024,
 
377
       ), out)
 
378
        self.assertEqual('', err)
 
379
 
 
380
        # Out of date checkout
 
381
        out, err = self.runbzr('info checkout')
 
382
        self.assertEqualDiff(
 
383
"""Location:
 
384
       checkout root: %s
 
385
  checkout of branch: %s
 
386
 
 
387
Format:
 
388
       control: Meta directory format 1
 
389
  working tree: Working tree format 3
 
390
        branch: Branch format 5
 
391
    repository: %s
 
392
 
 
393
Branch is out of date: missing 1 revision.
 
394
 
 
395
In the working tree:
 
396
         1 unchanged
 
397
         0 modified
 
398
         0 added
 
399
         0 removed
 
400
         0 renamed
 
401
         0 unknown
 
402
         0 ignored
 
403
         0 versioned subdirectories
 
404
 
 
405
Branch history:
 
406
         1 revision
 
407
         0 days old
 
408
   first revision: %s
 
409
  latest revision: %s
 
410
 
 
411
Revision store:
 
412
         1 revision
 
413
         %d KiB
 
414
""" % (branch4.bzrdir.root_transport.base,
 
415
       branch1.bzrdir.root_transport.base,
 
416
       branch4.repository._format.get_format_description(),
 
417
       datestring_first, datestring_first,
 
418
       # poking at _revision_store isn't all that clean, but neither is
 
419
       # having the ui test dependent on the exact overhead of a given store.
 
420
       branch4.repository._revision_store.total_size(
 
421
        branch4.repository.get_transaction())[1] / 1024,
 
422
       ), out)
 
423
        self.assertEqual('', err)
 
424
 
 
425
        # Out of date lightweight checkout
 
426
        out, err = self.runbzr('info lightcheckout --verbose')
 
427
        self.assertEqualDiff(
 
428
"""Location:
 
429
  light checkout root: %s
 
430
   checkout of branch: %s
 
431
 
 
432
Format:
 
433
       control: Meta directory format 1
 
434
  working tree: Working tree format 3
 
435
        branch: Branch format 4
 
436
    repository: Weave repository format 6
 
437
 
 
438
Working tree is out of date: missing 1 revision.
 
439
 
 
440
In the working tree:
 
441
         1 unchanged
 
442
         0 modified
 
443
         0 added
 
444
         0 removed
 
445
         0 renamed
 
446
         0 unknown
 
447
         0 ignored
 
448
         0 versioned subdirectories
 
449
 
 
450
Branch history:
 
451
         2 revisions
 
452
         1 committer
 
453
         0 days old
 
454
   first revision: %s
 
455
  latest revision: %s
 
456
 
 
457
Revision store:
 
458
         2 revisions
 
459
         0 KiB
 
460
""" % (tree5.bzrdir.root_transport.base,
 
461
       branch1.bzrdir.root_transport.base,
 
462
       datestring_first, datestring_last,
 
463
       ), out)
 
464
        self.assertEqual('', err)
 
465
 
 
466
    def test_info_shared_repository(self):
 
467
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
468
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
469
        transport = self.get_transport()
 
470
 
 
471
        # Create shared repository
 
472
        repo = self.make_repository('repo', shared=True)
 
473
        repo.set_make_working_trees(False)
 
474
        out, err = self.runbzr('info repo')
 
475
        self.assertEqualDiff(
 
476
"""Location:
 
477
  shared repository: %s
 
478
 
 
479
Format:
 
480
       control: Meta directory format 1
 
481
    repository: %s
 
482
 
 
483
Revision store:
 
484
         0 revisions
 
485
         0 KiB
 
486
""" % (repo.bzrdir.root_transport.base,
 
487
       repo._format.get_format_description(),
 
488
       ), out)
 
489
        self.assertEqual('', err)
 
490
 
 
491
        # Create branch inside shared repository
 
492
        repo.bzrdir.root_transport.mkdir('branch')
 
493
        branch1 = repo.bzrdir.create_branch_convenience('repo/branch')
 
494
        out, err = self.runbzr('info repo/branch')
 
495
        self.assertEqualDiff(
 
496
"""Location:
 
497
  shared repository: %s
 
498
  repository branch: branch
 
499
 
 
500
Format:
 
501
       control: Meta directory format 1
 
502
        branch: Branch format 5
 
503
    repository: %s
 
504
 
 
505
Branch history:
 
506
         0 revisions
 
507
 
 
508
Revision store:
 
509
         0 revisions
 
510
         0 KiB
 
511
""" % (repo.bzrdir.root_transport.base,
 
512
       repo._format.get_format_description(),
 
513
       ), out)
 
514
        self.assertEqual('', err)
 
515
 
 
516
        # Create lightweight checkout
 
517
        transport.mkdir('tree')
 
518
        transport.mkdir('tree/lightcheckout')
 
519
        dir2 = bzrlib.bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
 
520
        bzrlib.branch.BranchReferenceFormat().initialize(dir2, branch1)
 
521
        dir2.create_workingtree()
 
522
        tree2 = dir2.open_workingtree()
 
523
        branch2 = tree2.branch
 
524
        out, err = self.runbzr('info tree/lightcheckout')
 
525
        self.assertEqualDiff(
 
526
"""Location:
 
527
  light checkout root: %s
 
528
    shared repository: %s
 
529
    repository branch: branch
 
530
 
 
531
Format:
 
532
       control: Meta directory format 1
 
533
  working tree: Working tree format 3
 
534
        branch: Branch format 5
 
535
    repository: %s
 
536
 
 
537
In the working tree:
 
538
         0 unchanged
 
539
         0 modified
 
540
         0 added
 
541
         0 removed
 
542
         0 renamed
 
543
         0 unknown
 
544
         0 ignored
 
545
         0 versioned subdirectories
 
546
 
 
547
Branch history:
 
548
         0 revisions
 
549
 
 
550
Revision store:
 
551
         0 revisions
 
552
         0 KiB
 
553
""" % (tree2.bzrdir.root_transport.base,
 
554
       repo.bzrdir.root_transport.base,
 
555
       repo._format.get_format_description(),
 
556
       ), out)
 
557
        self.assertEqual('', err)
 
558
 
 
559
        # Create normal checkout
 
560
        branch3 = bzrlib.bzrdir.BzrDir.create_branch_convenience('tree/checkout')
 
561
        branch3.bind(branch1)
 
562
        tree3 = branch3.bzrdir.open_workingtree()
 
563
        tree3.update()
 
564
        out, err = self.runbzr('info tree/checkout --verbose')
 
565
        self.assertEqualDiff(
 
566
"""Location:
 
567
       checkout root: %s
 
568
  checkout of branch: %s
 
569
 
 
570
Format:
 
571
       control: Meta directory format 1
 
572
  working tree: Working tree format 3
 
573
        branch: Branch format 5
 
574
    repository: %s
 
575
 
 
576
In the working tree:
 
577
         0 unchanged
 
578
         0 modified
 
579
         0 added
 
580
         0 removed
 
581
         0 renamed
 
582
         0 unknown
 
583
         0 ignored
 
584
         0 versioned subdirectories
 
585
 
 
586
Branch history:
 
587
         0 revisions
 
588
         0 committers
 
589
 
 
590
Revision store:
 
591
         0 revisions
 
592
         0 KiB
 
593
""" % (branch3.bzrdir.root_transport.base,
 
594
       branch1.bzrdir.root_transport.base,
 
595
       repo._format.get_format_description(),
 
596
       ), out)
 
597
        self.assertEqual('', err)
 
598
 
 
599
        # Update lightweight checkout
 
600
        self.build_tree(['tree/lightcheckout/a'])
 
601
        tree2.add('a')
 
602
        tree2.commit('commit one')
 
603
        rev = repo.get_revision(branch2.revision_history()[0])
 
604
        datestring_first = format_date(rev.timestamp, rev.timezone)
 
605
        out, err = self.runbzr('info tree/lightcheckout --verbose')
 
606
        self.assertEqualDiff(
 
607
"""Location:
 
608
  light checkout root: %s
 
609
    shared repository: %s
 
610
    repository branch: branch
 
611
 
 
612
Format:
 
613
       control: Meta directory format 1
 
614
  working tree: Working tree format 3
 
615
        branch: Branch format 5
 
616
    repository: %s
 
617
 
 
618
In the working tree:
 
619
         1 unchanged
 
620
         0 modified
 
621
         0 added
 
622
         0 removed
 
623
         0 renamed
 
624
         0 unknown
 
625
         0 ignored
 
626
         0 versioned subdirectories
 
627
 
 
628
Branch history:
 
629
         1 revision
 
630
         1 committer
 
631
         0 days old
 
632
   first revision: %s
 
633
  latest revision: %s
 
634
 
 
635
Revision store:
 
636
         1 revision
 
637
         %d KiB
 
638
""" % (tree2.bzrdir.root_transport.base,
 
639
       repo.bzrdir.root_transport.base,
 
640
       repo._format.get_format_description(),
 
641
       datestring_first, datestring_first,
 
642
       # poking at _revision_store isn't all that clean, but neither is
 
643
       # having the ui test dependent on the exact overhead of a given store.
 
644
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
645
       ), out)
 
646
        self.assertEqual('', err)
 
647
 
 
648
        # Out of date checkout
 
649
        out, err = self.runbzr('info tree/checkout')
 
650
        self.assertEqualDiff(
 
651
"""Location:
 
652
       checkout root: %s
 
653
  checkout of branch: %s
 
654
 
 
655
Format:
 
656
       control: Meta directory format 1
 
657
  working tree: Working tree format 3
 
658
        branch: Branch format 5
 
659
    repository: %s
 
660
 
 
661
Branch is out of date: missing 1 revision.
 
662
 
 
663
In the working tree:
 
664
         0 unchanged
 
665
         0 modified
 
666
         0 added
 
667
         0 removed
 
668
         0 renamed
 
669
         0 unknown
 
670
         0 ignored
 
671
         0 versioned subdirectories
 
672
 
 
673
Branch history:
 
674
         0 revisions
 
675
 
 
676
Revision store:
 
677
         0 revisions
 
678
         0 KiB
 
679
""" % (tree3.bzrdir.root_transport.base,
 
680
       branch1.bzrdir.root_transport.base,
 
681
       repo._format.get_format_description(),
 
682
       ), out)
 
683
        self.assertEqual('', err)
 
684
 
 
685
        # Update checkout
 
686
        tree3.update()
 
687
        self.build_tree(['tree/checkout/b'])
 
688
        tree3.add('b')
 
689
        out, err = self.runbzr('info tree/checkout --verbose')
 
690
        self.assertEqualDiff(
 
691
"""Location:
 
692
       checkout root: %s
 
693
  checkout of branch: %s
 
694
 
 
695
Format:
 
696
       control: Meta directory format 1
 
697
  working tree: Working tree format 3
 
698
        branch: Branch format 5
 
699
    repository: %s
 
700
 
 
701
In the working tree:
 
702
         1 unchanged
 
703
         0 modified
 
704
         1 added
 
705
         0 removed
 
706
         0 renamed
 
707
         0 unknown
 
708
         0 ignored
 
709
         0 versioned subdirectories
 
710
 
 
711
Branch history:
 
712
         1 revision
 
713
         1 committer
 
714
         0 days old
 
715
   first revision: %s
 
716
  latest revision: %s
 
717
 
 
718
Revision store:
 
719
         1 revision
 
720
         %d KiB
 
721
""" % (tree3.bzrdir.root_transport.base, branch1.bzrdir.root_transport.base,
 
722
       repo._format.get_format_description(),
 
723
       datestring_first, datestring_first,
 
724
       # poking at _revision_store isn't all that clean, but neither is
 
725
       # having the ui test dependent on the exact overhead of a given store.
 
726
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
727
       ), out)
 
728
        self.assertEqual('', err)
 
729
        tree3.commit('commit two')
 
730
 
 
731
        # Out of date lightweight checkout
 
732
        rev = repo.get_revision(branch1.revision_history()[-1])
 
733
        datestring_last = format_date(rev.timestamp, rev.timezone)
 
734
        out, err = self.runbzr('info tree/lightcheckout --verbose')
 
735
        self.assertEqualDiff(
 
736
"""Location:
 
737
  light checkout root: %s
 
738
    shared repository: %s
 
739
    repository branch: branch
 
740
 
 
741
Format:
 
742
       control: Meta directory format 1
 
743
  working tree: Working tree format 3
 
744
        branch: Branch format 5
 
745
    repository: %s
 
746
 
 
747
Working tree is out of date: missing 1 revision.
 
748
 
 
749
In the working tree:
 
750
         1 unchanged
 
751
         0 modified
 
752
         0 added
 
753
         0 removed
 
754
         0 renamed
 
755
         0 unknown
 
756
         0 ignored
 
757
         0 versioned subdirectories
 
758
 
 
759
Branch history:
 
760
         2 revisions
 
761
         1 committer
 
762
         0 days old
 
763
   first revision: %s
 
764
  latest revision: %s
 
765
 
 
766
Revision store:
 
767
         2 revisions
 
768
         %d KiB
 
769
""" % (tree2.bzrdir.root_transport.base,
 
770
       repo.bzrdir.root_transport.base,
 
771
       repo._format.get_format_description(),
 
772
       datestring_first, datestring_last,
 
773
       # poking at _revision_store isn't all that clean, but neither is
 
774
       # having the ui test dependent on the exact overhead of a given store.
 
775
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
776
       ), out)
 
777
        self.assertEqual('', err)
 
778
 
 
779
        # Show info about shared branch
 
780
        out, err = self.runbzr('info repo/branch --verbose')
 
781
        self.assertEqualDiff(
 
782
"""Location:
 
783
  shared repository: %s
 
784
  repository branch: branch
 
785
 
 
786
Format:
 
787
       control: Meta directory format 1
 
788
        branch: Branch format 5
 
789
    repository: %s
 
790
 
 
791
Branch history:
 
792
         2 revisions
 
793
         1 committer
 
794
         0 days old
 
795
   first revision: %s
 
796
  latest revision: %s
 
797
 
 
798
Revision store:
 
799
         2 revisions
 
800
         %d KiB
 
801
""" % (repo.bzrdir.root_transport.base,
 
802
       repo._format.get_format_description(),
 
803
       datestring_first, datestring_last,
 
804
       # poking at _revision_store isn't all that clean, but neither is
 
805
       # having the ui test dependent on the exact overhead of a given store.
 
806
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
807
       ), out)
 
808
        self.assertEqual('', err)
 
809
 
 
810
        # Show info about repository with revisions
 
811
        out, err = self.runbzr('info repo')
 
812
        self.assertEqualDiff(
 
813
"""Location:
 
814
  shared repository: %s
 
815
 
 
816
Format:
 
817
       control: Meta directory format 1
 
818
    repository: %s
 
819
 
 
820
Revision store:
 
821
         2 revisions
 
822
         %d KiB
 
823
""" % (repo.bzrdir.root_transport.base,
 
824
       repo._format.get_format_description(),
 
825
       # poking at _revision_store isn't all that clean, but neither is
 
826
       # having the ui test dependent on the exact overhead of a given store.
 
827
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
828
       ), out)
 
829
        self.assertEqual('', err)
 
830
 
 
831
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
832
 
 
833
    def test_info_shared_repository_with_trees(self):
 
834
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
835
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
836
        transport = self.get_transport()
 
837
 
 
838
        # Create shared repository with working trees
 
839
        repo = self.make_repository('repo', shared=True)
 
840
        repo.set_make_working_trees(True)
 
841
        out, err = self.runbzr('info repo')
 
842
        self.assertEqualDiff(
 
843
"""Location:
 
844
  shared repository: %s
 
845
 
 
846
Format:
 
847
       control: Meta directory format 1
 
848
    repository: %s
 
849
 
 
850
Create working tree for new branches inside the repository.
 
851
 
 
852
Revision store:
 
853
         0 revisions
 
854
         0 KiB
 
855
""" % (repo.bzrdir.root_transport.base,
 
856
       repo._format.get_format_description(),
 
857
       ), out)
 
858
        self.assertEqual('', err)
 
859
 
 
860
        # Create two branches
 
861
        repo.bzrdir.root_transport.mkdir('branch1')
 
862
        branch1 = repo.bzrdir.create_branch_convenience('repo/branch1')
 
863
        branch2 = branch1.bzrdir.sprout('repo/branch2').open_branch()
 
864
 
 
865
        # Empty first branch
 
866
        out, err = self.runbzr('info repo/branch1 --verbose')
 
867
        self.assertEqualDiff(
 
868
"""Location:
 
869
    shared repository: %s
 
870
  repository checkout: branch1
 
871
 
 
872
Format:
 
873
       control: Meta directory format 1
 
874
  working tree: Working tree format 3
 
875
        branch: Branch format 5
 
876
    repository: %s
 
877
 
 
878
In the working tree:
 
879
         0 unchanged
 
880
         0 modified
 
881
         0 added
 
882
         0 removed
 
883
         0 renamed
 
884
         0 unknown
 
885
         0 ignored
 
886
         0 versioned subdirectories
 
887
 
 
888
Branch history:
 
889
         0 revisions
 
890
         0 committers
 
891
 
 
892
Revision store:
 
893
         0 revisions
 
894
         0 KiB
 
895
""" % (repo.bzrdir.root_transport.base,
 
896
       repo._format.get_format_description(),
 
897
       ), out)
 
898
        self.assertEqual('', err)
 
899
 
 
900
        # Update first branch
 
901
        self.build_tree(['repo/branch1/a'])
 
902
        tree1 = branch1.bzrdir.open_workingtree()
 
903
        tree1.add('a')
 
904
        tree1.commit('commit one')
 
905
        rev = repo.get_revision(branch1.revision_history()[0])
 
906
        datestring_first = format_date(rev.timestamp, rev.timezone)
 
907
        out, err = self.runbzr('info repo/branch1')
 
908
        self.assertEqualDiff(
 
909
"""Location:
 
910
    shared repository: %s
 
911
  repository checkout: branch1
 
912
 
 
913
Format:
 
914
       control: Meta directory format 1
 
915
  working tree: Working tree format 3
 
916
        branch: Branch format 5
 
917
    repository: %s
 
918
 
 
919
In the working tree:
 
920
         1 unchanged
 
921
         0 modified
 
922
         0 added
 
923
         0 removed
 
924
         0 renamed
 
925
         0 unknown
 
926
         0 ignored
 
927
         0 versioned subdirectories
 
928
 
 
929
Branch history:
 
930
         1 revision
 
931
         0 days old
 
932
   first revision: %s
 
933
  latest revision: %s
 
934
 
 
935
Revision store:
 
936
         1 revision
 
937
         %d KiB
 
938
""" % (repo.bzrdir.root_transport.base,
 
939
       repo._format.get_format_description(),
 
940
       datestring_first, datestring_first,
 
941
       # poking at _revision_store isn't all that clean, but neither is
 
942
       # having the ui test dependent on the exact overhead of a given store.
 
943
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
944
       ), out)
 
945
        self.assertEqual('', err)
 
946
 
 
947
        # Out of date second branch
 
948
        out, err = self.runbzr('info repo/branch2 --verbose')
 
949
        self.assertEqualDiff(
 
950
"""Location:
 
951
    shared repository: %s
 
952
  repository checkout: branch2
 
953
 
 
954
Related branches:
 
955
  parent branch: %s
 
956
 
 
957
Format:
 
958
       control: Meta directory format 1
 
959
  working tree: Working tree format 3
 
960
        branch: Branch format 5
 
961
    repository: %s
 
962
 
 
963
In the working tree:
 
964
         0 unchanged
 
965
         0 modified
 
966
         0 added
 
967
         0 removed
 
968
         0 renamed
 
969
         0 unknown
 
970
         0 ignored
 
971
         0 versioned subdirectories
 
972
 
 
973
Branch history:
 
974
         0 revisions
 
975
         0 committers
 
976
 
 
977
Revision store:
 
978
         1 revision
 
979
         %d KiB
 
980
""" % (repo.bzrdir.root_transport.base,
 
981
       branch1.bzrdir.root_transport.base,
 
982
       repo._format.get_format_description(),
 
983
       # poking at _revision_store isn't all that clean, but neither is
 
984
       # having the ui test dependent on the exact overhead of a given store.
 
985
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
986
       ), out)
 
987
        self.assertEqual('', err)
 
988
 
 
989
        # Update second branch
 
990
        tree2 = branch2.bzrdir.open_workingtree()
 
991
        tree2.pull(branch1)
 
992
        out, err = self.runbzr('info repo/branch2')
 
993
        self.assertEqualDiff(
 
994
"""Location:
 
995
    shared repository: %s
 
996
  repository checkout: branch2
 
997
 
 
998
Related branches:
 
999
  parent branch: %s
 
1000
 
 
1001
Format:
 
1002
       control: Meta directory format 1
 
1003
  working tree: Working tree format 3
 
1004
        branch: Branch format 5
 
1005
    repository: %s
 
1006
 
 
1007
In the working tree:
 
1008
         1 unchanged
 
1009
         0 modified
 
1010
         0 added
 
1011
         0 removed
 
1012
         0 renamed
 
1013
         0 unknown
 
1014
         0 ignored
 
1015
         0 versioned subdirectories
 
1016
 
 
1017
Branch history:
 
1018
         1 revision
 
1019
         0 days old
 
1020
   first revision: %s
 
1021
  latest revision: %s
 
1022
 
 
1023
Revision store:
 
1024
         1 revision
 
1025
         %d KiB
 
1026
""" % (repo.bzrdir.root_transport.base,
 
1027
       branch1.bzrdir.root_transport.base,
 
1028
       repo._format.get_format_description(),
 
1029
       datestring_first, datestring_first,
 
1030
       # poking at _revision_store isn't all that clean, but neither is
 
1031
       # having the ui test dependent on the exact overhead of a given store.
 
1032
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
1033
       ), out)
 
1034
        self.assertEqual('', err)
 
1035
 
 
1036
        # Show info about repository with revisions
 
1037
        out, err = self.runbzr('info repo')
 
1038
        self.assertEqualDiff(
 
1039
"""Location:
 
1040
  shared repository: %s
 
1041
 
 
1042
Format:
 
1043
       control: Meta directory format 1
 
1044
    repository: %s
 
1045
 
 
1046
Create working tree for new branches inside the repository.
 
1047
 
 
1048
Revision store:
 
1049
         1 revision
 
1050
         %d KiB
 
1051
""" % (repo.bzrdir.root_transport.base,
 
1052
       repo._format.get_format_description(),
 
1053
       # poking at _revision_store isn't all that clean, but neither is
 
1054
       # having the ui test dependent on the exact overhead of a given store.
 
1055
       repo._revision_store.total_size(repo.get_transaction())[1] / 1024,
 
1056
       ),
 
1057
       out)
 
1058
        self.assertEqual('', err)
 
1059
 
 
1060
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
1061
    
 
1062
    def test_info_shared_repository_with_tree_in_root(self):
 
1063
        old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
1064
        bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrlib.bzrdir.BzrDirMetaFormat1())
 
1065
        transport = self.get_transport()
 
1066
 
 
1067
        # Create shared repository with working trees
 
1068
        repo = self.make_repository('repo', shared=True)
 
1069
        repo.set_make_working_trees(True)
 
1070
        out, err = self.runbzr('info repo')
 
1071
        self.assertEqualDiff(
 
1072
"""Location:
 
1073
  shared repository: %s
 
1074
 
 
1075
Format:
 
1076
       control: Meta directory format 1
 
1077
    repository: %s
 
1078
 
 
1079
Create working tree for new branches inside the repository.
 
1080
 
 
1081
Revision store:
 
1082
         0 revisions
 
1083
         0 KiB
 
1084
""" % (repo.bzrdir.root_transport.base,
 
1085
       repo._format.get_format_description(),
 
1086
       ), out)
 
1087
        self.assertEqual('', err)
 
1088
 
 
1089
        # Create branch in root of repository
 
1090
        control = repo.bzrdir
 
1091
        branch = control.create_branch()
 
1092
        control.create_workingtree()
 
1093
        out, err = self.runbzr('info repo')
 
1094
        self.assertEqualDiff(
 
1095
"""Location:
 
1096
    shared repository: %s
 
1097
  repository checkout: .
 
1098
 
 
1099
Format:
 
1100
       control: Meta directory format 1
 
1101
  working tree: Working tree format 3
 
1102
        branch: Branch format 5
 
1103
    repository: %s
 
1104
 
 
1105
In the working tree:
 
1106
         0 unchanged
 
1107
         0 modified
 
1108
         0 added
 
1109
         0 removed
 
1110
         0 renamed
 
1111
         0 unknown
 
1112
         0 ignored
 
1113
         0 versioned subdirectories
 
1114
 
 
1115
Branch history:
 
1116
         0 revisions
 
1117
 
 
1118
Revision store:
 
1119
         0 revisions
 
1120
         0 KiB
 
1121
""" % (repo.bzrdir.root_transport.base,
 
1122
       repo._format.get_format_description(),
 
1123
       ), out)
 
1124
        self.assertEqual('', err)
 
1125
 
 
1126
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
1127
 
 
1128
    def test_info_locking(self):
 
1129
        transport = self.get_transport()
 
1130
        # Create shared repository with a branch
 
1131
        repo = self.make_repository('repo', shared=True,
 
1132
                                    format=bzrlib.bzrdir.BzrDirMetaFormat1())
 
1133
        repo.set_make_working_trees(False)
 
1134
        repo.bzrdir.root_transport.mkdir('branch')
 
1135
        repo_branch = repo.bzrdir.create_branch_convenience('repo/branch',
 
1136
                                    format=bzrlib.bzrdir.BzrDirMetaFormat1())
 
1137
        # Do a heavy checkout
 
1138
        transport.mkdir('tree')
 
1139
        transport.mkdir('tree/checkout')
 
1140
        co_branch = bzrlib.bzrdir.BzrDir.create_branch_convenience('tree/checkout',
 
1141
                                    format=bzrlib.bzrdir.BzrDirMetaFormat1())
 
1142
        co_branch.bind(repo_branch)
 
1143
        # Do a light checkout of the heavy one
 
1144
        transport.mkdir('tree/lightcheckout')
 
1145
        lco_dir = bzrlib.bzrdir.BzrDirMetaFormat1().initialize('tree/lightcheckout')
 
1146
        bzrlib.branch.BranchReferenceFormat().initialize(lco_dir, co_branch)
 
1147
        lco_dir.create_workingtree()
 
1148
        lco_tree = lco_dir.open_workingtree()
 
1149
 
 
1150
        # Test all permutations of locking the working tree, branch and repository
 
1151
        # W B R
 
1152
 
 
1153
        # U U U
 
1154
        out, err = self.runbzr('info tree/lightcheckout')
 
1155
        self.assertEqualDiff(
 
1156
"""Location:
 
1157
  light checkout root: %s
 
1158
   checkout of branch: %s
 
1159
 
 
1160
Format:
 
1161
       control: Meta directory format 1
 
1162
  working tree: Working tree format 3
 
1163
        branch: Branch format 5
 
1164
    repository: %s
 
1165
 
 
1166
In the working tree:
 
1167
         0 unchanged
 
1168
         0 modified
 
1169
         0 added
 
1170
         0 removed
 
1171
         0 renamed
 
1172
         0 unknown
 
1173
         0 ignored
 
1174
         0 versioned subdirectories
 
1175
 
 
1176
Branch history:
 
1177
         0 revisions
 
1178
 
 
1179
Revision store:
 
1180
         0 revisions
 
1181
         0 KiB
 
1182
""" % (lco_tree.bzrdir.root_transport.base,
 
1183
       lco_tree.branch.bzrdir.root_transport.base,
 
1184
       lco_tree.branch.repository._format.get_format_description(),
 
1185
       ), out)
 
1186
        self.assertEqual('', err)
 
1187
        # U U L
 
1188
        lco_tree.branch.repository.lock_write()
 
1189
        out, err = self.runbzr('info tree/lightcheckout')
 
1190
        self.assertEqualDiff(
 
1191
"""Location:
 
1192
  light checkout root: %s
 
1193
   checkout of branch: %s
 
1194
 
 
1195
Format:
 
1196
       control: Meta directory format 1
 
1197
  working tree: Working tree format 3
 
1198
        branch: Branch format 5
 
1199
    repository: %s
 
1200
 
 
1201
Lock status:
 
1202
  working tree: unlocked
 
1203
        branch: unlocked
 
1204
    repository: locked
 
1205
 
 
1206
In the working tree:
 
1207
         0 unchanged
 
1208
         0 modified
 
1209
         0 added
 
1210
         0 removed
 
1211
         0 renamed
 
1212
         0 unknown
 
1213
         0 ignored
 
1214
         0 versioned subdirectories
 
1215
 
 
1216
Branch history:
 
1217
         0 revisions
 
1218
 
 
1219
Revision store:
 
1220
         0 revisions
 
1221
         0 KiB
 
1222
""" % (lco_tree.bzrdir.root_transport.base,
 
1223
       lco_tree.branch.bzrdir.root_transport.base,
 
1224
       lco_tree.branch.repository._format.get_format_description(),
 
1225
       ), out)
 
1226
        self.assertEqual('', err)
 
1227
        lco_tree.branch.repository.unlock()
 
1228
        # U L L
 
1229
        lco_tree.branch.lock_write()
 
1230
        out, err = self.runbzr('info tree/lightcheckout')
 
1231
        self.assertEqualDiff(
 
1232
"""Location:
 
1233
  light checkout root: %s
 
1234
   checkout of branch: %s
 
1235
 
 
1236
Format:
 
1237
       control: Meta directory format 1
 
1238
  working tree: Working tree format 3
 
1239
        branch: Branch format 5
 
1240
    repository: %s
 
1241
 
 
1242
Lock status:
 
1243
  working tree: unlocked
 
1244
        branch: locked
 
1245
    repository: locked
 
1246
 
 
1247
In the working tree:
 
1248
         0 unchanged
 
1249
         0 modified
 
1250
         0 added
 
1251
         0 removed
 
1252
         0 renamed
 
1253
         0 unknown
 
1254
         0 ignored
 
1255
         0 versioned subdirectories
 
1256
 
 
1257
Branch history:
 
1258
         0 revisions
 
1259
 
 
1260
Revision store:
 
1261
         0 revisions
 
1262
         0 KiB
 
1263
""" % (lco_tree.bzrdir.root_transport.base,
 
1264
       lco_tree.branch.bzrdir.root_transport.base,
 
1265
       lco_tree.branch.repository._format.get_format_description(),
 
1266
       ), out)
 
1267
        self.assertEqual('', err)
 
1268
        lco_tree.branch.unlock()
 
1269
        # L L L
 
1270
        lco_tree.lock_write()
 
1271
        out, err = self.runbzr('info tree/lightcheckout')
 
1272
        self.assertEqualDiff(
 
1273
"""Location:
 
1274
  light checkout root: %s
 
1275
   checkout of branch: %s
 
1276
 
 
1277
Format:
 
1278
       control: Meta directory format 1
 
1279
  working tree: Working tree format 3
 
1280
        branch: Branch format 5
 
1281
    repository: %s
 
1282
 
 
1283
Lock status:
 
1284
  working tree: locked
 
1285
        branch: locked
 
1286
    repository: locked
 
1287
 
 
1288
In the working tree:
 
1289
         0 unchanged
 
1290
         0 modified
 
1291
         0 added
 
1292
         0 removed
 
1293
         0 renamed
 
1294
         0 unknown
 
1295
         0 ignored
 
1296
         0 versioned subdirectories
 
1297
 
 
1298
Branch history:
 
1299
         0 revisions
 
1300
 
 
1301
Revision store:
 
1302
         0 revisions
 
1303
         0 KiB
 
1304
""" % (lco_tree.bzrdir.root_transport.base,
 
1305
       lco_tree.branch.bzrdir.root_transport.base,
 
1306
       lco_tree.branch.repository._format.get_format_description(),
 
1307
       ), out)
 
1308
        self.assertEqual('', err)
 
1309
        lco_tree.unlock()
 
1310
        # L L U
 
1311
        lco_tree.lock_write()
 
1312
        lco_tree.branch.repository.unlock()
 
1313
        out, err = self.runbzr('info tree/lightcheckout')
 
1314
        self.assertEqualDiff(
 
1315
"""Location:
 
1316
  light checkout root: %s
 
1317
   checkout of branch: %s
 
1318
 
 
1319
Format:
 
1320
       control: Meta directory format 1
 
1321
  working tree: Working tree format 3
 
1322
        branch: Branch format 5
 
1323
    repository: %s
 
1324
 
 
1325
Lock status:
 
1326
  working tree: locked
 
1327
        branch: locked
 
1328
    repository: unlocked
 
1329
 
 
1330
In the working tree:
 
1331
         0 unchanged
 
1332
         0 modified
 
1333
         0 added
 
1334
         0 removed
 
1335
         0 renamed
 
1336
         0 unknown
 
1337
         0 ignored
 
1338
         0 versioned subdirectories
 
1339
 
 
1340
Branch history:
 
1341
         0 revisions
 
1342
 
 
1343
Revision store:
 
1344
         0 revisions
 
1345
         0 KiB
 
1346
""" % (lco_tree.bzrdir.root_transport.base,
 
1347
       lco_tree.branch.bzrdir.root_transport.base,
 
1348
       lco_tree.branch.repository._format.get_format_description(),
 
1349
       ), out)
 
1350
        self.assertEqual('', err)
 
1351
        lco_tree.branch.repository.lock_write()
 
1352
        lco_tree.unlock()
 
1353
        # L U U
 
1354
        lco_tree.lock_write()
 
1355
        lco_tree.branch.unlock()
 
1356
        out, err = self.runbzr('info tree/lightcheckout')
 
1357
        self.assertEqualDiff(
 
1358
"""Location:
 
1359
  light checkout root: %s
 
1360
   checkout of branch: %s
 
1361
 
 
1362
Format:
 
1363
       control: Meta directory format 1
 
1364
  working tree: Working tree format 3
 
1365
        branch: Branch format 5
 
1366
    repository: %s
 
1367
 
 
1368
Lock status:
 
1369
  working tree: locked
 
1370
        branch: unlocked
 
1371
    repository: unlocked
 
1372
 
 
1373
In the working tree:
 
1374
         0 unchanged
 
1375
         0 modified
 
1376
         0 added
 
1377
         0 removed
 
1378
         0 renamed
 
1379
         0 unknown
 
1380
         0 ignored
 
1381
         0 versioned subdirectories
 
1382
 
 
1383
Branch history:
 
1384
         0 revisions
 
1385
 
 
1386
Revision store:
 
1387
         0 revisions
 
1388
         0 KiB
 
1389
""" % (lco_tree.bzrdir.root_transport.base,
 
1390
       lco_tree.branch.bzrdir.root_transport.base,
 
1391
       lco_tree.branch.repository._format.get_format_description(),
 
1392
       ), out)
 
1393
        self.assertEqual('', err)
 
1394
        lco_tree.branch.lock_write()
 
1395
        lco_tree.unlock()
 
1396
        # L U L
 
1397
        lco_tree.lock_write()
 
1398
        lco_tree.branch.unlock()
 
1399
        lco_tree.branch.repository.lock_write()
 
1400
        out, err = self.runbzr('info tree/lightcheckout')
 
1401
        self.assertEqualDiff(
 
1402
"""Location:
 
1403
  light checkout root: %s
 
1404
   checkout of branch: %s
 
1405
 
 
1406
Format:
 
1407
       control: Meta directory format 1
 
1408
  working tree: Working tree format 3
 
1409
        branch: Branch format 5
 
1410
    repository: %s
 
1411
 
 
1412
Lock status:
 
1413
  working tree: locked
 
1414
        branch: unlocked
 
1415
    repository: locked
 
1416
 
 
1417
In the working tree:
 
1418
         0 unchanged
 
1419
         0 modified
 
1420
         0 added
 
1421
         0 removed
 
1422
         0 renamed
 
1423
         0 unknown
 
1424
         0 ignored
 
1425
         0 versioned subdirectories
 
1426
 
 
1427
Branch history:
 
1428
         0 revisions
 
1429
 
 
1430
Revision store:
 
1431
         0 revisions
 
1432
         0 KiB
 
1433
""" % (lco_tree.bzrdir.root_transport.base,
 
1434
       lco_tree.branch.bzrdir.root_transport.base,
 
1435
       lco_tree.branch.repository._format.get_format_description(),
 
1436
       ), out)
 
1437
        self.assertEqual('', err)
 
1438
        lco_tree.branch.repository.unlock()
 
1439
        lco_tree.branch.lock_write()
 
1440
        lco_tree.unlock()
 
1441
        # U L U
 
1442
        lco_tree.branch.lock_write()
 
1443
        lco_tree.branch.repository.unlock()
 
1444
        out, err = self.runbzr('info tree/lightcheckout')
 
1445
        self.assertEqualDiff(
 
1446
"""Location:
 
1447
  light checkout root: %s
 
1448
   checkout of branch: %s
 
1449
 
 
1450
Format:
 
1451
       control: Meta directory format 1
 
1452
  working tree: Working tree format 3
 
1453
        branch: Branch format 5
 
1454
    repository: %s
 
1455
 
 
1456
Lock status:
 
1457
  working tree: unlocked
 
1458
        branch: locked
 
1459
    repository: unlocked
 
1460
 
 
1461
In the working tree:
 
1462
         0 unchanged
 
1463
         0 modified
 
1464
         0 added
 
1465
         0 removed
 
1466
         0 renamed
 
1467
         0 unknown
 
1468
         0 ignored
 
1469
         0 versioned subdirectories
 
1470
 
 
1471
Branch history:
 
1472
         0 revisions
 
1473
 
 
1474
Revision store:
 
1475
         0 revisions
 
1476
         0 KiB
 
1477
""" % (lco_tree.bzrdir.root_transport.base,
 
1478
       lco_tree.branch.bzrdir.root_transport.base,
 
1479
       lco_tree.branch.repository._format.get_format_description(),
 
1480
       ), out)
 
1481
        self.assertEqual('', err)
 
1482
        lco_tree.branch.repository.lock_write()
 
1483
        lco_tree.branch.unlock()
 
1484
 
 
1485
    def test_info_locking_oslocks(self):
 
1486
        tree = self.make_branch_and_tree('branch',
 
1487
                                         format=bzrlib.bzrdir.BzrDirFormat6())
 
1488
 
 
1489
        # Test all permutations of locking the working tree, branch and repository
 
1490
        # XXX: Well not yet, as we can't query oslocks yet. Currently, it's
 
1491
        # implemented by raising NotImplementedError and get_physical_lock_status()
 
1492
        # always returns false. This makes bzr info hide the lock status.  (Olaf)
 
1493
        # W B R
 
1494
 
 
1495
        # U U U
 
1496
        out, err = self.runbzr('info branch')
 
1497
        self.assertEqualDiff(
 
1498
"""Location:
 
1499
  branch root: %s
 
1500
 
 
1501
Format:
 
1502
       control: All-in-one format 6
 
1503
  working tree: Working tree format 2
 
1504
        branch: Branch format 4
 
1505
    repository: %s
 
1506
 
 
1507
In the working tree:
 
1508
         0 unchanged
 
1509
         0 modified
 
1510
         0 added
 
1511
         0 removed
 
1512
         0 renamed
 
1513
         0 unknown
 
1514
         0 ignored
 
1515
         0 versioned subdirectories
 
1516
 
 
1517
Branch history:
 
1518
         0 revisions
 
1519
 
 
1520
Revision store:
 
1521
         0 revisions
 
1522
         0 KiB
 
1523
""" % (tree.bzrdir.root_transport.base,
 
1524
       tree.branch.repository._format.get_format_description(),
 
1525
       ), out)
 
1526
        self.assertEqual('', err)
 
1527
        # L L L
 
1528
        tree.lock_write()
 
1529
        out, err = self.runbzr('info branch')
 
1530
        self.assertEqualDiff(
 
1531
"""Location:
 
1532
  branch root: %s
 
1533
 
 
1534
Format:
 
1535
       control: All-in-one format 6
 
1536
  working tree: Working tree format 2
 
1537
        branch: Branch format 4
 
1538
    repository: %s
 
1539
 
 
1540
In the working tree:
 
1541
         0 unchanged
 
1542
         0 modified
 
1543
         0 added
 
1544
         0 removed
 
1545
         0 renamed
 
1546
         0 unknown
 
1547
         0 ignored
 
1548
         0 versioned subdirectories
 
1549
 
 
1550
Branch history:
 
1551
         0 revisions
 
1552
 
 
1553
Revision store:
 
1554
         0 revisions
 
1555
         0 KiB
 
1556
""" % (tree.bzrdir.root_transport.base,
 
1557
       tree.branch.repository._format.get_format_description(),
 
1558
       ), out)
 
1559
        self.assertEqual('', err)
 
1560
        tree.unlock()