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)
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)
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')
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)
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')
1458
errors.ParentBranchExists, tree.bzrdir.create_branch,
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')
1466
errors.AlreadyBranchError, tree.bzrdir.create_branch,
1470
class SampleBzrFormat(bzrdir.BzrFormat):
1473
def get_format_string(cls):
1474
return "First line\n"
1477
class TestBzrFormat(TestCase):
1478
"""Tests for BzrFormat."""
1480
def test_as_string(self):
1481
format = SampleBzrFormat()
1482
format.features = {"foo": "required"}
1483
self.assertEquals(format.as_string(),
1486
format.features["another"] = "optional"
1487
self.assertEquals(format.as_string(),
1490
"optional another\n")
1492
def test_network_name(self):
1493
# The network string should include the feature info
1494
format = SampleBzrFormat()
1495
format.features = {"foo": "required"}
1497
"First line\nrequired foo\n",
1498
format.network_name())
1500
def test_from_string_no_features(self):
1502
format = SampleBzrFormat.from_string(
1504
self.assertEquals({}, format.features)
1506
def test_from_string_with_feature(self):
1508
format = SampleBzrFormat.from_string(
1509
"First line\nrequired foo\n")
1510
self.assertEquals("required", format.features.get("foo"))
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")
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")
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"))
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)
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)
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,
1553
self.addCleanup(SampleBzrFormat.unregister_feature, "nested-trees")
1554
SampleBzrFormat.register_feature("nested-trees")
1555
format.check_support_status(True)
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,
1563
self.addCleanup(SampleBzrFormat.unregister_feature, "nested-trees")
1564
SampleBzrFormat.register_feature("nested-trees")
1565
format.check_support_status(True)
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")
1574
def test_feature_with_space(self):
1575
# spaces are not allowed in feature names
1576
self.assertRaises(ValueError, SampleBzrFormat.register_feature,
1431
self.assertRaises(errors.BzrError, converter.convert, tree.bzrdir,