~bzr-pqm/bzr/bzr.dev

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