167
177
input_test = TestTransportProviderAdapter(
168
178
"test_adapter_sets_transport_class")
169
179
suite = TransportTestProviderAdapter().adapt(input_test)
180
# tests are generated in collation order.
181
# XXX: but i'm not sure the order should really be part of the
182
# contract of the adapter, should it -- mbp 20060201
170
183
test_iter = iter(suite)
171
184
http_test = test_iter.next()
172
185
local_relpath_test = test_iter.next()
173
186
local_abspath_test = test_iter.next()
174
187
local_urlpath_test = test_iter.next()
175
188
memory_test = test_iter.next()
189
readonly_test = test_iter.next()
177
191
sftp_abs_test = test_iter.next()
178
192
sftp_homedir_test = test_iter.next()
179
193
sftp_sibling_abs_test = test_iter.next()
180
194
# ftp_test = test_iter.next()
195
# should now be at the end of the test
181
196
self.assertRaises(StopIteration, test_iter.next)
182
197
self.assertEqual(LocalTransport, local_relpath_test.transport_class)
183
198
self.assertEqual(LocalRelpathServer, local_relpath_test.transport_server)
213
228
"TestTransportProviderAdapter."
214
229
"test_adapter_sets_transport_class(LocalRelpathServer)",
215
230
local_relpath_test.id())
233
class TestBranchProviderAdapter(TestCase):
234
"""A group of tests that test the branch implementation test adapter."""
236
def test_adapted_tests(self):
237
# check that constructor parameters are passed through to the adapted
239
from bzrlib.branch import BranchTestProviderAdapter
240
input_test = TestBranchProviderAdapter(
241
"test_adapted_tests")
245
adapter = BranchTestProviderAdapter(server1, server2, formats)
246
suite = adapter.adapt(input_test)
247
tests = list(iter(suite))
248
self.assertEqual(2, len(tests))
249
self.assertEqual(tests[0].branch_format, formats[0])
250
self.assertEqual(tests[0].transport_server, server1)
251
self.assertEqual(tests[0].transport_readonly_server, server2)
252
self.assertEqual(tests[1].branch_format, formats[1])
253
self.assertEqual(tests[1].transport_server, server1)
254
self.assertEqual(tests[1].transport_readonly_server, server2)
257
class TestTestCaseWithTransport(TestCaseWithTransport):
258
"""Tests for the convenience functions TestCaseWithTransport introduces."""
260
def test_get_readonly_url_none(self):
261
from bzrlib.transport import get_transport
262
from bzrlib.transport.memory import MemoryServer
263
from bzrlib.transport.readonly import ReadonlyTransportDecorator
264
self.transport_server = MemoryServer
265
self.transport_readonly_server = None
266
# calling get_readonly_transport() constructs a decorator on the url
268
url = self.get_readonly_url()
269
url2 = self.get_readonly_url('foo/bar')
270
t = get_transport(url)
271
t2 = get_transport(url2)
272
self.failUnless(isinstance(t, ReadonlyTransportDecorator))
273
self.failUnless(isinstance(t2, ReadonlyTransportDecorator))
274
self.assertEqual(t2.base[:-1], t.abspath('foo/bar'))
276
def test_get_readonly_url_http(self):
277
from bzrlib.transport import get_transport
278
from bzrlib.transport.local import LocalRelpathServer
279
from bzrlib.transport.http import HttpServer, HttpTransport
280
self.transport_server = LocalRelpathServer
281
self.transport_readonly_server = HttpServer
282
# calling get_readonly_transport() gives us a HTTP server instance.
283
url = self.get_readonly_url()
284
url2 = self.get_readonly_url('foo/bar')
285
t = get_transport(url)
286
t2 = get_transport(url2)
287
self.failUnless(isinstance(t, HttpTransport))
288
self.failUnless(isinstance(t2, HttpTransport))
289
self.assertEqual(t2.base[:-1], t.abspath('foo/bar'))
292
class TestChrootedTest(ChrootedTestCase):
294
def test_root_is_root(self):
295
from bzrlib.transport import get_transport
296
t = get_transport(self.get_readonly_url())
298
self.assertEqual(url, t.clone('..').base)