~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Vincent Ladeuil
  • Date: 2011-11-29 16:27:56 UTC
  • mto: This revision was merged to the branch mainline in revision 6331.
  • Revision ID: v.ladeuil+lp@free.fr-20111129162756-2mc5uztxmd37w5b8
Give meaningful deprecation warnings for deprecated test features

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
"""Tests for the info command of bzr."""
19
19
 
 
20
import shutil
20
21
import sys
21
22
 
22
23
from bzrlib import (
23
24
    branch,
24
25
    bzrdir,
 
26
    controldir,
25
27
    errors,
26
28
    info,
27
29
    osutils,
45
47
        self.assertEqual(out, '')
46
48
        self.assertEqual(err, 'bzr: ERROR: Not a branch: "%s".\n' % location)
47
49
 
 
50
    def test_info_empty_controldir(self):
 
51
        self.make_bzrdir('ctrl')
 
52
        out, err = self.run_bzr('info ctrl')
 
53
        self.assertEquals(out,
 
54
            'Empty control directory (format: 2a or pack-0.92)\n'
 
55
            'Location:\n'
 
56
            '  control directory: ctrl\n')
 
57
        self.assertEquals(err, '')
 
58
 
 
59
    def test_info_dangling_branch_reference(self):
 
60
        br = self.make_branch('target')
 
61
        br.create_checkout('from', lightweight=True)
 
62
        shutil.rmtree('target')
 
63
        out, err = self.run_bzr('info from')
 
64
        self.assertEquals(out,
 
65
            'Dangling branch reference (format: 2a or pack-0.92)\n'
 
66
            'Location:\n'
 
67
            '   control directory: from\n'
 
68
            '  checkout of branch: target\n')
 
69
        self.assertEquals(err, '')
 
70
 
48
71
    def test_info_standalone(self):
49
72
        transport = self.get_transport()
50
73
 
51
74
        # Create initial standalone branch
52
 
        tree1 = self.make_branch_and_tree('standalone', 'weave')
 
75
        tree1 = self.make_branch_and_tree('standalone', 'knit')
53
76
        self.build_tree(['standalone/a'])
54
77
        tree1.add('a')
55
78
        branch1 = tree1.branch
56
79
 
57
80
        out, err = self.run_bzr('info standalone')
58
81
        self.assertEqualDiff(
59
 
"""Standalone tree (format: weave)
 
82
"""Standalone tree (format: knit)
60
83
Location:
61
84
  branch root: standalone
62
85
""", out)
65
88
        # Standalone branch - verbose mode
66
89
        out, err = self.run_bzr('info standalone -v')
67
90
        self.assertEqualDiff(
68
 
"""Standalone tree (format: weave)
 
91
"""Standalone tree (format: knit)
69
92
Location:
70
93
  branch root: standalone
71
94
 
72
95
Format:
73
 
       control: All-in-one format 6
74
 
  working tree: Working tree format 2
75
 
        branch: Branch format 4
76
 
    repository: Weave repository format 6
 
96
       control: Meta directory format 1
 
97
  working tree: Working tree format 3
 
98
        branch: Branch format 5
 
99
    repository: Knit repository format 1
77
100
 
78
101
In the working tree:
79
102
         0 unchanged
96
119
        # Standalone branch - really verbose mode
97
120
        out, err = self.run_bzr('info standalone -vv')
98
121
        self.assertEqualDiff(
99
 
"""Standalone tree (format: weave)
 
122
"""Standalone tree (format: knit)
100
123
Location:
101
124
  branch root: standalone
102
125
 
103
126
Format:
104
 
       control: All-in-one format 6
105
 
  working tree: Working tree format 2
106
 
        branch: Branch format 4
107
 
    repository: Weave repository format 6
 
127
       control: Meta directory format 1
 
128
  working tree: Working tree format 3
 
129
        branch: Branch format 5
 
130
    repository: Knit repository format 1
108
131
 
109
132
In the working tree:
110
133
         0 unchanged
125
148
""", out)
126
149
        self.assertEqual('', err)
127
150
        tree1.commit('commit one')
128
 
        rev = branch1.repository.get_revision(branch1.revision_history()[0])
 
151
        rev = branch1.repository.get_revision(branch1.last_revision())
129
152
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
130
153
 
131
154
        # Branch standalone with push location
134
157
 
135
158
        out, err = self.run_bzr('info branch')
136
159
        self.assertEqualDiff(
137
 
"""Standalone tree (format: weave)
 
160
"""Standalone tree (format: knit)
138
161
Location:
139
162
  branch root: branch
140
163
 
146
169
 
147
170
        out, err = self.run_bzr('info branch --verbose')
148
171
        self.assertEqualDiff(
149
 
"""Standalone tree (format: weave)
 
172
"""Standalone tree (format: knit)
150
173
Location:
151
174
  branch root: branch
152
175
 
155
178
  parent branch: standalone
156
179
 
157
180
Format:
158
 
       control: All-in-one format 6
159
 
  working tree: Working tree format 2
160
 
        branch: Branch format 4
161
 
    repository: Weave repository format 6
 
181
       control: Meta directory format 1
 
182
  working tree: Working tree format 3
 
183
        branch: Branch format 5
 
184
    repository: Knit repository format 1
162
185
 
163
186
In the working tree:
164
187
         1 unchanged
187
210
        branch1.bzrdir.sprout('bound')
188
211
        knit1_format = bzrdir.format_registry.make_bzrdir('knit')
189
212
        upgrade.upgrade('bound', knit1_format)
190
 
        branch3 = bzrdir.BzrDir.open('bound').open_branch()
 
213
        branch3 = controldir.ControlDir.open('bound').open_branch()
191
214
        branch3.bind(branch1)
192
215
        bound_tree = branch3.bzrdir.open_workingtree()
193
216
        out, err = self.run_bzr('info -v bound')
213
236
         0 removed
214
237
         0 renamed
215
238
         0 unknown
216
 
         1 ignored
 
239
         0 ignored
217
240
         0 versioned subdirectories
218
241
 
219
242
Branch history:
232
255
        self.assertEqual('', err)
233
256
 
234
257
        # Checkout standalone (same as above, but does not have parent set)
235
 
        branch4 = bzrdir.BzrDir.create_branch_convenience('checkout',
 
258
        branch4 = controldir.ControlDir.create_branch_convenience('checkout',
236
259
            format=knit1_format)
237
260
        branch4.bind(branch1)
238
261
        branch4.bzrdir.open_workingtree().update()
276
299
        tree5 = branch1.create_checkout('lightcheckout', lightweight=True)
277
300
        branch5 = tree5.branch
278
301
        out, err = self.run_bzr('info -v lightcheckout')
 
302
        if "metaweave" in bzrdir.format_registry:
 
303
            format_description = "knit or metaweave"
 
304
        else:
 
305
            format_description = "knit"
279
306
        self.assertEqualDiff(
280
307
"""Lightweight checkout (format: %s)
281
308
Location:
284
311
 
285
312
Format:
286
313
       control: Meta directory format 1
287
 
  working tree: Working tree format 6
288
 
        branch: Branch format 4
289
 
    repository: Weave repository format 6
 
314
  working tree: Working tree format 3
 
315
        branch: Branch format 5
 
316
    repository: Knit repository format 1
290
317
 
291
318
In the working tree:
292
319
         1 unchanged
306
333
 
307
334
Repository:
308
335
         1 revision
309
 
""" % (self._repo_strings, datestring_first, datestring_first,), out)
 
336
""" % (format_description, datestring_first, datestring_first,), out)
310
337
        self.assertEqual('', err)
311
338
 
312
339
        # Update initial standalone branch
313
340
        self.build_tree(['standalone/b'])
314
341
        tree1.add('b')
315
342
        tree1.commit('commit two')
316
 
        rev = branch1.repository.get_revision(branch1.revision_history()[-1])
 
343
        rev = branch1.repository.get_revision(branch1.last_revision())
317
344
        datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
318
345
 
319
346
        # Out of date branched standalone branch will not be detected
320
347
        out, err = self.run_bzr('info -v branch')
321
348
        self.assertEqualDiff(
322
 
"""Standalone tree (format: weave)
 
349
"""Standalone tree (format: knit)
323
350
Location:
324
351
  branch root: branch
325
352
 
328
355
  parent branch: standalone
329
356
 
330
357
Format:
331
 
       control: All-in-one format 6
332
 
  working tree: Working tree format 2
333
 
        branch: Branch format 4
334
 
    repository: Weave repository format 6
 
358
       control: Meta directory format 1
 
359
  working tree: Working tree format 3
 
360
        branch: Branch format 5
 
361
    repository: Knit repository format 1
335
362
 
336
363
In the working tree:
337
364
         1 unchanged
381
408
         0 removed
382
409
         0 renamed
383
410
         0 unknown
384
 
         1 ignored
 
411
         0 ignored
385
412
         0 versioned subdirectories
386
413
 
387
414
Branch history:
446
473
 
447
474
Format:
448
475
       control: Meta directory format 1
449
 
  working tree: Working tree format 6
450
 
        branch: Branch format 4
451
 
    repository: Weave repository format 6
 
476
  working tree: Working tree format 3
 
477
        branch: Branch format 5
 
478
    repository: Knit repository format 1
452
479
 
453
480
Working tree is out of date: missing 1 revision.
454
481
 
470
497
 
471
498
Repository:
472
499
         2 revisions
473
 
""" % (self._repo_strings, datestring_first, datestring_last,), out)
 
500
""" % (format_description, datestring_first, datestring_last,), out)
474
501
        self.assertEqual('', err)
475
502
 
476
503
    def test_info_standalone_no_tree(self):
525
552
 
526
553
        # Create branch inside shared repository
527
554
        repo.bzrdir.root_transport.mkdir('branch')
528
 
        branch1 = repo.bzrdir.create_branch_convenience('repo/branch',
529
 
            format=format)
 
555
        branch1 = controldir.ControlDir.create_branch_convenience(
 
556
            'repo/branch', format=format)
530
557
        out, err = self.run_bzr('info -v repo/branch')
531
558
        self.assertEqualDiff(
532
559
"""Repository branch (format: dirstate or knit)
567
594
        self.build_tree(['tree/lightcheckout/a'])
568
595
        tree2.add('a')
569
596
        tree2.commit('commit one')
570
 
        rev = repo.get_revision(branch2.revision_history()[0])
 
597
        rev = repo.get_revision(branch2.last_revision())
571
598
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
572
599
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
573
600
        self.assertEqualDiff(
686
713
        tree3.commit('commit two')
687
714
 
688
715
        # Out of date lightweight checkout
689
 
        rev = repo.get_revision(branch1.revision_history()[-1])
 
716
        rev = repo.get_revision(branch1.last_revision())
690
717
        datestring_last = osutils.format_date(rev.timestamp, rev.timezone)
691
718
        out, err = self.run_bzr('info tree/lightcheckout --verbose')
692
719
        self.assertEqualDiff(
799
826
 
800
827
        # Create two branches
801
828
        repo.bzrdir.root_transport.mkdir('branch1')
802
 
        branch1 = repo.bzrdir.create_branch_convenience('repo/branch1',
 
829
        branch1 = controldir.ControlDir.create_branch_convenience('repo/branch1',
803
830
            format=format)
804
831
        branch2 = branch1.bzrdir.sprout('repo/branch2').open_branch()
805
832
 
842
869
        tree1 = branch1.bzrdir.open_workingtree()
843
870
        tree1.add('a')
844
871
        tree1.commit('commit one')
845
 
        rev = repo.get_revision(branch1.revision_history()[0])
 
872
        rev = repo.get_revision(branch1.last_revision())
846
873
        datestring_first = osutils.format_date(rev.timestamp, rev.timezone)
847
874
        out, err = self.run_bzr('info -v repo/branch1')
848
875
        self.assertEqualDiff(
1217
1244
                                    format=bzrdir.BzrDirMetaFormat1())
1218
1245
        repo.set_make_working_trees(False)
1219
1246
        repo.bzrdir.root_transport.mkdir('branch')
1220
 
        repo_branch = repo.bzrdir.create_branch_convenience('repo/branch',
1221
 
                                    format=bzrdir.BzrDirMetaFormat1())
 
1247
        repo_branch = controldir.ControlDir.create_branch_convenience(
 
1248
            'repo/branch', format=bzrdir.BzrDirMetaFormat1())
1222
1249
        # Do a heavy checkout
1223
1250
        transport.mkdir('tree')
1224
1251
        transport.mkdir('tree/checkout')
1225
 
        co_branch = bzrdir.BzrDir.create_branch_convenience('tree/checkout',
1226
 
            format=bzrdir.BzrDirMetaFormat1())
 
1252
        co_branch = controldir.ControlDir.create_branch_convenience(
 
1253
            'tree/checkout', format=bzrdir.BzrDirMetaFormat1())
1227
1254
        co_branch.bind(repo_branch)
1228
1255
        # Do a light checkout of the heavy one
1229
1256
        transport.mkdir('tree/lightcheckout')
1323
1350
            self.knownFailure('Win32 cannot run "bzr info"'
1324
1351
                              ' when the tree is locked.')
1325
1352
 
1326
 
    def test_info_locking_oslocks(self):
1327
 
        if sys.platform == "win32":
1328
 
            self.skip("don't use oslocks on win32 in unix manner")
1329
 
        # This test tests old (all-in-one, OS lock using) behaviour which
1330
 
        # simply cannot work on windows (and is indeed why we changed our
1331
 
        # design. As such, don't try to remove the thisFailsStrictLockCheck
1332
 
        # call here.
1333
 
        self.thisFailsStrictLockCheck()
1334
 
 
1335
 
        tree = self.make_branch_and_tree('branch',
1336
 
                                         format=bzrdir.BzrDirFormat6())
1337
 
 
1338
 
        # Test all permutations of locking the working tree, branch and repository
1339
 
        # XXX: Well not yet, as we can't query oslocks yet. Currently, it's
1340
 
        # implemented by raising NotImplementedError and get_physical_lock_status()
1341
 
        # always returns false. This makes bzr info hide the lock status.  (Olaf)
1342
 
        # W B R
1343
 
 
1344
 
        # U U U
1345
 
        out, err = self.run_bzr('info -v branch')
1346
 
        self.assertEqualDiff(
1347
 
"""Standalone tree (format: weave)
1348
 
Location:
1349
 
  branch root: %s
1350
 
 
1351
 
Format:
1352
 
       control: All-in-one format 6
1353
 
  working tree: Working tree format 2
1354
 
        branch: Branch format 4
1355
 
    repository: %s
1356
 
 
1357
 
In the working tree:
1358
 
         0 unchanged
1359
 
         0 modified
1360
 
         0 added
1361
 
         0 removed
1362
 
         0 renamed
1363
 
         0 unknown
1364
 
         0 ignored
1365
 
         0 versioned subdirectories
1366
 
 
1367
 
Branch history:
1368
 
         0 revisions
1369
 
 
1370
 
Repository:
1371
 
         0 revisions
1372
 
""" % ('branch', tree.branch.repository._format.get_format_description(),
1373
 
       ), out)
1374
 
        self.assertEqual('', err)
1375
 
        # L L L
1376
 
        tree.lock_write()
1377
 
        out, err = self.run_bzr('info -v branch')
1378
 
        self.assertEqualDiff(
1379
 
"""Standalone tree (format: weave)
1380
 
Location:
1381
 
  branch root: %s
1382
 
 
1383
 
Format:
1384
 
       control: All-in-one format 6
1385
 
  working tree: Working tree format 2
1386
 
        branch: Branch format 4
1387
 
    repository: %s
1388
 
 
1389
 
In the working tree:
1390
 
         0 unchanged
1391
 
         0 modified
1392
 
         0 added
1393
 
         0 removed
1394
 
         0 renamed
1395
 
         0 unknown
1396
 
         0 ignored
1397
 
         0 versioned subdirectories
1398
 
 
1399
 
Branch history:
1400
 
         0 revisions
1401
 
 
1402
 
Repository:
1403
 
         0 revisions
1404
 
""" % ('branch', tree.branch.repository._format.get_format_description(),
1405
 
       ), out)
1406
 
        self.assertEqual('', err)
1407
 
        tree.unlock()
1408
 
 
1409
1353
    def test_info_stacked(self):
1410
1354
        # We have a mainline
1411
1355
        trunk_tree = self.make_branch_and_tree('mainline',
1424
1368
     stacked on: mainline
1425
1369
""", out)
1426
1370
        self.assertEqual("", err)
 
1371
 
 
1372
    def test_info_revinfo_optional(self):
 
1373
        tree = self.make_branch_and_tree('.')
 
1374
        def last_revision_info(self):
 
1375
            raise errors.UnsupportedOperation(last_revision_info, self)
 
1376
        self.overrideAttr(
 
1377
            branch.Branch, "last_revision_info", last_revision_info)
 
1378
        out, err = self.run_bzr('info -v .')
 
1379
        self.assertEqual(
 
1380
"""Standalone tree (format: 2a)
 
1381
Location:
 
1382
  branch root: .
 
1383
 
 
1384
Format:
 
1385
       control: Meta directory format 1
 
1386
  working tree: Working tree format 6
 
1387
        branch: Branch format 7
 
1388
    repository: Repository format 2a - rich roots, group compression and chk inventories
 
1389
 
 
1390
In the working tree:
 
1391
         0 unchanged
 
1392
         0 modified
 
1393
         0 added
 
1394
         0 removed
 
1395
         0 renamed
 
1396
         0 unknown
 
1397
         0 ignored
 
1398
         0 versioned subdirectories
 
1399
""", out)
 
1400
        self.assertEqual("", err)
 
1401
 
 
1402
    def test_info_shows_colocated_branches(self):
 
1403
        bzrdir = self.make_branch('.', format='development-colo').bzrdir
 
1404
        bzrdir.create_branch(name="colo1")
 
1405
        bzrdir.create_branch(name="colo2")
 
1406
        bzrdir.create_branch(name="colo3")
 
1407
        out, err = self.run_bzr('info -v .')
 
1408
        self.assertEqualDiff(
 
1409
"""Standalone branch (format: development-colo)
 
1410
Location:
 
1411
  branch root: .
 
1412
 
 
1413
Format:
 
1414
       control: Meta directory format 1 with support for colocated branches
 
1415
        branch: Branch format 7
 
1416
    repository: Repository format 2a - rich roots, group compression and chk inventories
 
1417
 
 
1418
Control directory:
 
1419
         4 branches
 
1420
 
 
1421
Branch history:
 
1422
         0 revisions
 
1423
 
 
1424
Repository:
 
1425
         0 revisions
 
1426
""", out)
 
1427
        self.assertEqual("", err)
 
1428
 
 
1429
 
 
1430
class TestSmartServerInfo(tests.TestCaseWithTransport):
 
1431
 
 
1432
    def test_simple_branch_info(self):
 
1433
        self.setup_smart_server_with_call_log()
 
1434
        t = self.make_branch_and_tree('branch')
 
1435
        self.build_tree_contents([('branch/foo', 'thecontents')])
 
1436
        t.add("foo")
 
1437
        t.commit("message")
 
1438
        self.reset_smart_call_log()
 
1439
        out, err = self.run_bzr(['info', self.get_url('branch')])
 
1440
        # This figure represent the amount of work to perform this use case. It
 
1441
        # is entirely ok to reduce this number if a test fails due to rpc_count
 
1442
        # being too low. If rpc_count increases, more network roundtrips have
 
1443
        # become necessary for this use case. Please do not adjust this number
 
1444
        # upwards without agreement from bzr's network support maintainers.
 
1445
        self.assertLength(12, self.hpss_calls)
 
1446
 
 
1447
    def test_verbose_branch_info(self):
 
1448
        self.setup_smart_server_with_call_log()
 
1449
        t = self.make_branch_and_tree('branch')
 
1450
        self.build_tree_contents([('branch/foo', 'thecontents')])
 
1451
        t.add("foo")
 
1452
        t.commit("message")
 
1453
        self.reset_smart_call_log()
 
1454
        out, err = self.run_bzr(['info', '-v', self.get_url('branch')])
 
1455
        # This figure represent the amount of work to perform this use case. It
 
1456
        # is entirely ok to reduce this number if a test fails due to rpc_count
 
1457
        # being too low. If rpc_count increases, more network roundtrips have
 
1458
        # become necessary for this use case. Please do not adjust this number
 
1459
        # upwards without agreement from bzr's network support maintainers.
 
1460
        self.assertLength(16, self.hpss_calls)