48
51
class TestTransport(tests.TestCase):
49
52
"""Test the non transport-concrete class functionality."""
51
# FIXME: These tests should use addCleanup() and/or overrideAttr() instead
52
# of try/finally -- vila 20100205
54
54
def test__get_set_protocol_handlers(self):
55
55
handlers = transport._get_protocol_handlers()
56
self.assertNotEqual([], handlers.keys( ))
58
transport._clear_protocol_handlers()
59
self.assertEqual([], transport._get_protocol_handlers().keys())
61
transport._set_protocol_handlers(handlers)
56
self.assertNotEqual([], handlers.keys())
57
transport._clear_protocol_handlers()
58
self.addCleanup(transport._set_protocol_handlers, handlers)
59
self.assertEqual([], transport._get_protocol_handlers().keys())
63
61
def test_get_transport_modules(self):
64
62
handlers = transport._get_protocol_handlers()
63
self.addCleanup(transport._set_protocol_handlers, handlers)
65
64
# don't pollute the current handlers
66
65
transport._clear_protocol_handlers()
67
67
class SampleHandler(object):
68
68
"""I exist, isnt that enough?"""
70
transport._clear_protocol_handlers()
71
transport.register_transport_proto('foo')
72
transport.register_lazy_transport('foo',
73
'bzrlib.tests.test_transport',
74
'TestTransport.SampleHandler')
75
transport.register_transport_proto('bar')
76
transport.register_lazy_transport('bar',
77
'bzrlib.tests.test_transport',
78
'TestTransport.SampleHandler')
79
self.assertEqual([SampleHandler.__module__,
80
'bzrlib.transport.chroot',
81
'bzrlib.transport.pathfilter'],
82
transport._get_transport_modules())
84
transport._set_protocol_handlers(handlers)
69
transport._clear_protocol_handlers()
70
transport.register_transport_proto('foo')
71
transport.register_lazy_transport('foo',
72
'bzrlib.tests.test_transport',
73
'TestTransport.SampleHandler')
74
transport.register_transport_proto('bar')
75
transport.register_lazy_transport('bar',
76
'bzrlib.tests.test_transport',
77
'TestTransport.SampleHandler')
78
self.assertEqual([SampleHandler.__module__,
79
'bzrlib.transport.chroot',
80
'bzrlib.transport.pathfilter'],
81
transport._get_transport_modules())
86
83
def test_transport_dependency(self):
87
84
"""Transport with missing dependency causes no error"""
88
85
saved_handlers = transport._get_protocol_handlers()
86
self.addCleanup(transport._set_protocol_handlers, saved_handlers)
89
87
# don't pollute the current handlers
90
88
transport._clear_protocol_handlers()
89
transport.register_transport_proto('foo')
90
transport.register_lazy_transport(
91
'foo', 'bzrlib.tests.test_transport', 'BadTransportHandler')
92
transport.register_transport_proto('foo')
93
transport.register_lazy_transport(
94
'foo', 'bzrlib.tests.test_transport', 'BadTransportHandler')
96
transport.get_transport('foo://fooserver/foo')
97
except errors.UnsupportedProtocol, e:
99
self.assertEquals('Unsupported protocol'
100
' for url "foo://fooserver/foo":'
101
' Unable to import library "some_lib":'
102
' testing missing dependency', str(e))
104
self.fail('Did not raise UnsupportedProtocol')
106
# restore original values
107
transport._set_protocol_handlers(saved_handlers)
93
transport.get_transport('foo://fooserver/foo')
94
except errors.UnsupportedProtocol, e:
96
self.assertEquals('Unsupported protocol'
97
' for url "foo://fooserver/foo":'
98
' Unable to import library "some_lib":'
99
' testing missing dependency', str(e))
101
self.fail('Did not raise UnsupportedProtocol')
109
103
def test_transport_fallback(self):
110
104
"""Transport with missing dependency causes no error"""
111
105
saved_handlers = transport._get_protocol_handlers()
113
transport._clear_protocol_handlers()
114
transport.register_transport_proto('foo')
115
transport.register_lazy_transport(
116
'foo', 'bzrlib.tests.test_transport', 'BackupTransportHandler')
117
transport.register_lazy_transport(
118
'foo', 'bzrlib.tests.test_transport', 'BadTransportHandler')
119
t = transport.get_transport('foo://fooserver/foo')
120
self.assertTrue(isinstance(t, BackupTransportHandler))
122
transport._set_protocol_handlers(saved_handlers)
106
self.addCleanup(transport._set_protocol_handlers, saved_handlers)
107
transport._clear_protocol_handlers()
108
transport.register_transport_proto('foo')
109
transport.register_lazy_transport(
110
'foo', 'bzrlib.tests.test_transport', 'BackupTransportHandler')
111
transport.register_lazy_transport(
112
'foo', 'bzrlib.tests.test_transport', 'BadTransportHandler')
113
t = transport.get_transport('foo://fooserver/foo')
114
self.assertTrue(isinstance(t, BackupTransportHandler))
124
116
def test_ssh_hints(self):
125
117
"""Transport ssh:// should raise an error pointing out bzr+ssh://"""
219
211
def test_coalesce_fudge(self):
220
212
self.check([(10, 30, [(0, 10), (20, 10)]),
221
(100, 10, [(0, 10),]),
213
(100, 10, [(0, 10)]),
222
214
], [(10, 10), (30, 10), (100, 10)],
225
217
def test_coalesce_max_size(self):
226
218
self.check([(10, 20, [(0, 10), (10, 10)]),
227
219
(30, 50, [(0, 50)]),
228
220
# If one range is above max_size, it gets its own coalesced
230
(100, 80, [(0, 80),]),],
222
(100, 80, [(0, 80)]),],
231
223
[(10, 10), (20, 10), (30, 50), (100, 80)],
235
226
def test_coalesce_no_max_size(self):
236
self.check([(10, 170, [(0, 10), (10, 10), (20, 50), (70, 100)]),],
227
self.check([(10, 170, [(0, 10), (10, 10), (20, 50), (70, 100)])],
237
228
[(10, 10), (20, 10), (30, 50), (80, 100)],
240
231
def test_coalesce_default_limit(self):
241
232
# By default we use a 100MB max size.
242
ten_mb = 10*1024*1024
243
self.check([(0, 10*ten_mb, [(i*ten_mb, ten_mb) for i in range(10)]),
233
ten_mb = 10 * 1024 * 1024
234
self.check([(0, 10 * ten_mb, [(i * ten_mb, ten_mb) for i in range(10)]),
244
235
(10*ten_mb, ten_mb, [(0, ten_mb)])],
245
236
[(i*ten_mb, ten_mb) for i in range(11)])
246
self.check([(0, 11*ten_mb, [(i*ten_mb, ten_mb) for i in range(11)]),],
247
[(i*ten_mb, ten_mb) for i in range(11)],
237
self.check([(0, 11 * ten_mb, [(i * ten_mb, ten_mb) for i in range(11)])],
238
[(i * ten_mb, ten_mb) for i in range(11)],
248
239
max_size=1*1024*1024*1024)
1004
996
result = http.unhtml_roughly(fake_html)
1005
997
self.assertEquals(len(result), 1000)
1006
998
self.assertStartsWith(result, " something!")
1001
class SomeDirectory(object):
1003
def look_up(self, name, url):
1007
class TestLocationToUrl(tests.TestCase):
1009
def test_regular_url(self):
1010
self.assertEquals("file://foo", location_to_url("file://foo"))
1012
def test_directory(self):
1013
directories.register("bar:", SomeDirectory, "Dummy directory")
1014
self.addCleanup(directories.remove, "bar:")
1015
self.assertEquals("http://bar", location_to_url("bar:"))
1017
def test_unicode_url(self):
1018
self.assertRaises(errors.InvalidURL, location_to_url,
1019
"http://fo/\xc3\xaf".decode("utf-8"))
1021
def test_unicode_path(self):
1022
self.assertEquals("file:///foo/bar%C3%AF",
1023
location_to_url("/foo/bar\xc3\xaf".decode("utf-8")))
1025
def test_path(self):
1026
self.assertEquals("file:///foo/bar", location_to_url("/foo/bar"))