77
82
formats = self.registry._get_all()
78
83
self.assertEquals(1, len(formats))
79
84
self.assertIsInstance(formats[0], SampleExtraComponentFormat)
87
class TestControlDirFormatDeprecated(tests.TestCaseWithTransport):
88
"""Tests for removed registration method in the ControlDirFormat facility."""
90
def test_register_format(self):
91
self.assertRaises(errors.BzrError,
92
controldir.ControlDirFormat.register_format, object())
95
class TestProber(tests.TestCaseWithTransport):
96
"""Per-prober tests."""
99
(prober_cls.__name__, {'prober_cls': prober_cls})
100
for prober_cls in controldir.ControlDirFormat._probers]
103
super(TestProber, self).setUp()
104
self.prober = self.prober_cls()
106
def test_probe_transport_empty(self):
107
transport = self.get_transport(".")
108
self.assertRaises(errors.NotBranchError,
109
self.prober.probe_transport, transport)
111
def test_known_formats(self):
112
known_formats = self.prober_cls.known_formats()
113
self.assertIsInstance(known_formats, set)
114
for format in known_formats:
115
self.assertIsInstance(format, controldir.ControlDirFormat,
119
class NotBzrDir(controldir.ControlDir):
120
"""A non .bzr based control directory."""
122
def __init__(self, transport, format):
123
self._format = format
124
self.root_transport = transport
125
self.transport = transport.clone('.not')
128
class NotBzrDirFormat(controldir.ControlDirFormat):
129
"""A test class representing any non-.bzr based disk format."""
131
def initialize_on_transport(self, transport):
132
"""Initialize a new .not dir in the base directory of a Transport."""
133
transport.mkdir('.not')
134
return self.open(transport)
136
def open(self, transport):
137
"""Open this directory."""
138
return NotBzrDir(transport, self)
141
class NotBzrDirProber(controldir.Prober):
143
def probe_transport(self, transport):
144
"""Our format is present if the transport ends in '.not/'."""
145
if transport.has('.not'):
146
return NotBzrDirFormat()
149
def known_formats(cls):
150
return set([NotBzrDirFormat()])
153
class TestNotBzrDir(tests.TestCaseWithTransport):
154
"""Tests for using the controldir api with a non .bzr based disk format.
156
If/when one of these is in the core, we can let the implementation tests
160
def test_create_and_find_format(self):
161
# create a .notbzr dir
162
format = NotBzrDirFormat()
163
dir = format.initialize(self.get_url())
164
self.assertIsInstance(dir, NotBzrDir)
166
controldir.ControlDirFormat.register_prober(NotBzrDirProber)
168
found = controldir.ControlDirFormat.find_format(self.get_transport())
169
self.assertIsInstance(found, NotBzrDirFormat)
171
controldir.ControlDirFormat.unregister_prober(NotBzrDirProber)
173
def test_included_in_known_formats(self):
174
controldir.ControlDirFormat.register_prober(NotBzrDirProber)
175
self.addCleanup(controldir.ControlDirFormat.unregister_prober, NotBzrDirProber)
176
formats = controldir.ControlDirFormat.known_formats()
177
self.assertIsInstance(formats, set)
178
for format in formats:
179
if isinstance(format, NotBzrDirFormat):
182
self.fail("No NotBzrDirFormat in %s" % formats)