~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_bzrdir.py

  • Committer: Shannon Weyrick
  • Date: 2011-11-16 20:59:10 UTC
  • mto: This revision was merged to the branch mainline in revision 6268.
  • Revision ID: weyrick@mozek.us-20111116205910-1xbpqbimbw3fvfqw
A version of the patch, based on suggestions from John Meinel, which detects an empty page differently to avoid false positives.

Show diffs side-by-side

added added

removed removed

Lines of Context:
253
253
    def open(self, transport, _found=None):
254
254
        return "opened branch."
255
255
 
256
 
    @classmethod
257
 
    def from_string(cls, format_string):
258
 
        return cls()
259
 
 
260
256
 
261
257
class BzrDirFormatTest1(bzrdir.BzrDirMetaFormat1):
262
258
 
824
820
 
825
821
    def test_sprout_recursive(self):
826
822
        tree = self.make_branch_and_tree('tree1',
827
 
                                         format='development-subtree')
 
823
                                         format='dirstate-with-subtree')
828
824
        sub_tree = self.make_branch_and_tree('tree1/subtree',
829
 
            format='development-subtree')
 
825
            format='dirstate-with-subtree')
830
826
        sub_tree.set_root_id('subtree-root')
831
827
        tree.add_reference(sub_tree)
832
828
        self.build_tree(['tree1/subtree/file'])
849
845
 
850
846
    def test_sprout_recursive_treeless(self):
851
847
        tree = self.make_branch_and_tree('tree1',
852
 
            format='development-subtree')
 
848
            format='dirstate-with-subtree')
853
849
        sub_tree = self.make_branch_and_tree('tree1/subtree',
854
 
            format='development-subtree')
 
850
            format='dirstate-with-subtree')
855
851
        tree.add_reference(sub_tree)
856
852
        self.build_tree(['tree1/subtree/file'])
857
853
        sub_tree.add('file')
858
854
        tree.commit('Initial commit')
859
855
        # The following line force the orhaning to reveal bug #634470
860
 
        tree.branch.get_config_stack().set(
 
856
        tree.branch.get_config().set_user_option(
861
857
            'bzr.transform.orphan_policy', 'move')
862
858
        tree.bzrdir.destroy_workingtree()
863
859
        # FIXME: subtree/.bzr is left here which allows the test to pass (or
864
860
        # fail :-( ) -- vila 20100909
865
861
        repo = self.make_repository('repo', shared=True,
866
 
            format='development-subtree')
 
862
            format='dirstate-with-subtree')
867
863
        repo.set_make_working_trees(False)
868
864
        # FIXME: we just deleted the workingtree and now we want to use it ????
869
865
        # At a minimum, we should use tree.branch below (but this fails too
1021
1017
        otherdir = bzrdir.format_registry.make_bzrdir('knit')
1022
1018
        self.assertEqual(otherdir, mydir)
1023
1019
        self.assertFalse(otherdir != mydir)
1024
 
        otherdir2 = bzrdir.format_registry.make_bzrdir('development-subtree')
 
1020
        otherdir2 = bzrdir.format_registry.make_bzrdir('dirstate-with-subtree')
1025
1021
        self.assertNotEqual(otherdir2, mydir)
1026
1022
        self.assertFalse(otherdir2 == mydir)
1027
1023
 
1028
 
    def test_with_features(self):
1029
 
        tree = self.make_branch_and_tree('tree', format='2a')
1030
 
        tree.bzrdir.update_feature_flags({"bar": "required"})
1031
 
        self.assertRaises(errors.MissingFeature, bzrdir.BzrDir.open, 'tree')
1032
 
        bzrdir.BzrDirMetaFormat1.register_feature('bar')
1033
 
        self.addCleanup(bzrdir.BzrDirMetaFormat1.unregister_feature, 'bar')
1034
 
        dir = bzrdir.BzrDir.open('tree')
1035
 
        self.assertEquals("required", dir._format.features.get("bar"))
1036
 
        tree.bzrdir.update_feature_flags({"bar": None, "nonexistant": None})
1037
 
        dir = bzrdir.BzrDir.open('tree')
1038
 
        self.assertEquals({}, dir._format.features)
1039
 
 
1040
1024
    def test_needs_conversion_different_working_tree(self):
1041
1025
        # meta1dirs need an conversion if any element is not the default.
1042
1026
        new_format = bzrdir.format_registry.make_bzrdir('dirstate')
1260
1244
        self.test_branch = _TestBranch(self.transport)
1261
1245
        self.test_branch.repository = self.create_repository()
1262
1246
 
1263
 
    def open_branch(self, unsupported=False, possible_transports=None):
 
1247
    def open_branch(self, unsupported=False):
1264
1248
        return self.test_branch
1265
1249
 
1266
1250
    def cloning_metadir(self, require_stacking=False):
1298
1282
    def _get_config(self):
1299
1283
        return config.TransportConfig(self._transport, 'branch.conf')
1300
1284
 
1301
 
    def _get_config_store(self):
1302
 
        return config.BranchStore(self)
1303
 
 
1304
1285
    def set_parent(self, parent):
1305
1286
        self._parent = parent
1306
1287
 
1447
1428
        tree.bzrdir.create_branch(name="another-colocated-branch")
1448
1429
        converter = tree.bzrdir._format.get_converter(
1449
1430
            bzrdir.BzrDirMetaFormat1())
1450
 
        result = converter.convert(tree.bzrdir, bzrdir.BzrDirMetaFormat1())
1451
 
        self.assertIsInstance(result._format, bzrdir.BzrDirMetaFormat1)
1452
 
 
1453
 
    def test_nested(self):
1454
 
        tree = self.make_branch_and_tree('.', format='development-colo')
1455
 
        tree.bzrdir.create_branch(name='foo')
1456
 
        tree.bzrdir.create_branch(name='fool/bla')
1457
 
        self.assertRaises(
1458
 
            errors.ParentBranchExists, tree.bzrdir.create_branch,
1459
 
            name='foo/bar')
1460
 
 
1461
 
    def test_parent(self):
1462
 
        tree = self.make_branch_and_tree('.', format='development-colo')
1463
 
        tree.bzrdir.create_branch(name='fool/bla')
1464
 
        tree.bzrdir.create_branch(name='foo/bar')
1465
 
        self.assertRaises(
1466
 
            errors.AlreadyBranchError, tree.bzrdir.create_branch,
1467
 
            name='foo')
1468
 
 
1469
 
 
1470
 
class SampleBzrFormat(bzrdir.BzrFormat):
1471
 
 
1472
 
    @classmethod
1473
 
    def get_format_string(cls):
1474
 
        return "First line\n"
1475
 
 
1476
 
 
1477
 
class TestBzrFormat(TestCase):
1478
 
    """Tests for BzrFormat."""
1479
 
 
1480
 
    def test_as_string(self):
1481
 
        format = SampleBzrFormat()
1482
 
        format.features = {"foo": "required"}
1483
 
        self.assertEquals(format.as_string(),
1484
 
            "First line\n"
1485
 
            "required foo\n")
1486
 
        format.features["another"] = "optional"
1487
 
        self.assertEquals(format.as_string(),
1488
 
            "First line\n"
1489
 
            "required foo\n"
1490
 
            "optional another\n")
1491
 
 
1492
 
    def test_network_name(self):
1493
 
        # The network string should include the feature info
1494
 
        format = SampleBzrFormat()
1495
 
        format.features = {"foo": "required"}
1496
 
        self.assertEquals(
1497
 
            "First line\nrequired foo\n",
1498
 
            format.network_name())
1499
 
 
1500
 
    def test_from_string_no_features(self):
1501
 
        # No features
1502
 
        format = SampleBzrFormat.from_string(
1503
 
            "First line\n")
1504
 
        self.assertEquals({}, format.features)
1505
 
 
1506
 
    def test_from_string_with_feature(self):
1507
 
        # Proper feature
1508
 
        format = SampleBzrFormat.from_string(
1509
 
            "First line\nrequired foo\n")
1510
 
        self.assertEquals("required", format.features.get("foo"))
1511
 
 
1512
 
    def test_from_string_format_string_mismatch(self):
1513
 
        # The first line has to match the format string
1514
 
        self.assertRaises(AssertionError, SampleBzrFormat.from_string,
1515
 
            "Second line\nrequired foo\n")
1516
 
 
1517
 
    def test_from_string_missing_space(self):
1518
 
        # At least one space is required in the feature lines
1519
 
        self.assertRaises(errors.ParseFormatError, SampleBzrFormat.from_string,
1520
 
            "First line\nfoo\n")
1521
 
 
1522
 
    def test_from_string_with_spaces(self):
1523
 
        # Feature with spaces (in case we add stuff like this in the future)
1524
 
        format = SampleBzrFormat.from_string(
1525
 
            "First line\nrequired foo with spaces\n")
1526
 
        self.assertEquals("required", format.features.get("foo with spaces"))
1527
 
 
1528
 
    def test_eq(self):
1529
 
        format1 = SampleBzrFormat()
1530
 
        format1.features = {"nested-trees": "optional"}
1531
 
        format2 = SampleBzrFormat()
1532
 
        format2.features = {"nested-trees": "optional"}
1533
 
        self.assertEquals(format1, format1)
1534
 
        self.assertEquals(format1, format2)
1535
 
        format3 = SampleBzrFormat()
1536
 
        self.assertNotEquals(format1, format3)
1537
 
 
1538
 
    def test_check_support_status_optional(self):
1539
 
        # Optional, so silently ignore
1540
 
        format = SampleBzrFormat()
1541
 
        format.features = {"nested-trees": "optional"}
1542
 
        format.check_support_status(True)
1543
 
        self.addCleanup(SampleBzrFormat.unregister_feature, "nested-trees")
1544
 
        SampleBzrFormat.register_feature("nested-trees")
1545
 
        format.check_support_status(True)
1546
 
 
1547
 
    def test_check_support_status_required(self):
1548
 
        # Optional, so trigger an exception
1549
 
        format = SampleBzrFormat()
1550
 
        format.features = {"nested-trees": "required"}
1551
 
        self.assertRaises(errors.MissingFeature, format.check_support_status,
1552
 
            True)
1553
 
        self.addCleanup(SampleBzrFormat.unregister_feature, "nested-trees")
1554
 
        SampleBzrFormat.register_feature("nested-trees")
1555
 
        format.check_support_status(True)
1556
 
 
1557
 
    def test_check_support_status_unknown(self):
1558
 
        # treat unknown necessity as required
1559
 
        format = SampleBzrFormat()
1560
 
        format.features = {"nested-trees": "unknown"}
1561
 
        self.assertRaises(errors.MissingFeature, format.check_support_status,
1562
 
            True)
1563
 
        self.addCleanup(SampleBzrFormat.unregister_feature, "nested-trees")
1564
 
        SampleBzrFormat.register_feature("nested-trees")
1565
 
        format.check_support_status(True)
1566
 
 
1567
 
    def test_feature_already_registered(self):
1568
 
        # a feature can only be registered once
1569
 
        self.addCleanup(SampleBzrFormat.unregister_feature, "nested-trees")
1570
 
        SampleBzrFormat.register_feature("nested-trees")
1571
 
        self.assertRaises(errors.FeatureAlreadyRegistered,
1572
 
            SampleBzrFormat.register_feature, "nested-trees")
1573
 
 
1574
 
    def test_feature_with_space(self):
1575
 
        # spaces are not allowed in feature names
1576
 
        self.assertRaises(ValueError, SampleBzrFormat.register_feature,
1577
 
            "nested trees")
 
1431
        self.assertRaises(errors.BzrError, converter.convert, tree.bzrdir,
 
1432
            None)
 
1433