def test_stop_server(self): backing_transport = memory.MemoryTransport() server = chroot.ChrootServer(backing_transport) server.start_server() server.stop_server() self.assertFalse( server.scheme in transport._get_protocol_handlers().keys())
def memory_factory(url): from bzrlib.transport import memory result = memory.MemoryTransport(url) result._dirs = self._dirs result._files = self._files result._locks = self._locks return result
def test_iter_files_recursive(self): t = memory.MemoryTransport() t.mkdir('dir') t.put_bytes('dir/foo', 'content') t.put_bytes('dir/bar', 'content') t.put_bytes('bar', 'content') paths = set(t.iter_files_recursive()) self.assertEqual(set(['dir/foo', 'dir/bar', 'bar']), paths)
def test_list_dir(self): t = memory.MemoryTransport() t.put_bytes('foo', 'content') t.mkdir('dir') t.put_bytes('dir/subfoo', 'content') t.put_bytes('dirlike', 'content') self.assertEqual(['dir', 'dirlike', 'foo'], sorted(t.list_dir('.'))) self.assertEqual(['subfoo'], sorted(t.list_dir('dir')))
def test_protocol_version_detection_one(self): # SmartWSGIApp detects requests that don't start with # REQUEST_VERSION_TWO as version one. transport = memory.MemoryTransport() wsgi_app = wsgi.SmartWSGIApp(transport) fake_input = StringIO('hello\n') environ = self.build_environ({ 'REQUEST_METHOD': 'POST', 'CONTENT_LENGTH': len(fake_input.getvalue()), 'wsgi.input': fake_input, 'bzrlib.relpath': 'foo', }) iterable = wsgi_app(environ, self.start_response) response = self.read_response(iterable) self.assertEqual('200 OK', self.status) # Expect a version 1-encoded response. self.assertEqual('ok\x012\n', response)
def test_smart_wsgi_app_request_and_response(self): # SmartWSGIApp reads the smart request from the 'wsgi.input' file-like # object in the environ dict, and returns the response via the iterable # returned to the WSGI handler. transport = memory.MemoryTransport() transport.put_bytes('foo', 'some bytes') wsgi_app = wsgi.SmartWSGIApp(transport) wsgi_app.make_request = self._fake_make_request fake_input = StringIO('fake request') environ = self.build_environ({ 'REQUEST_METHOD': 'POST', 'CONTENT_LENGTH': len(fake_input.getvalue()), 'wsgi.input': fake_input, 'bzrlib.relpath': 'foo', }) iterable = wsgi_app(environ, self.start_response) response = self.read_response(iterable) self.assertEqual('200 OK', self.status) self.assertEqual('got bytes: fake request', response)
def test_abspath(self): t = memory.MemoryTransport() self.assertEqual("memory:///relpath", t.abspath('relpath'))
def test_construct(self): backing_transport = memory.MemoryTransport() server = chroot.ChrootServer(backing_transport) self.assertEqual(backing_transport, server.backing_transport)
def test_stat(self): t = memory.MemoryTransport() t.put_bytes('foo', 'content') t.put_bytes('bar', 'phowar') self.assertEqual(7, t.stat('foo').st_size) self.assertEqual(6, t.stat('bar').st_size)
def test_abspath_of_root(self): t = memory.MemoryTransport() self.assertEqual("memory:///", t.base) self.assertEqual("memory:///", t.abspath('/'))
def test_parameters(self): t = memory.MemoryTransport() self.assertEqual(True, t.listable()) self.assertEqual(False, t.is_readonly())
def test_put_and_get(self): t = memory.MemoryTransport() t.put_file('path', StringIO('content')) self.assertEqual(t.get('path').read(), 'content') t.put_bytes('path', 'content') self.assertEqual(t.get('path').read(), 'content')
def test_get_transport(self): memory.MemoryTransport()
def test_mkdir(self): t = memory.MemoryTransport() t.mkdir('dir') t.append_bytes('dir/path', 'content') self.assertEqual(t.get('dir/path').read(), 'content')
def test_has_missing(self): t = memory.MemoryTransport() self.assertEqual(False, t.has('foo'))
def test_has_present(self): t = memory.MemoryTransport() t.append_bytes('foo', 'content') self.assertEqual(True, t.has('foo'))
def test_get_missing(self): transport = memory.MemoryTransport() self.assertRaises(errors.NoSuchFile, transport.get, 'foo')
def test_put_without_dir_fails(self): t = memory.MemoryTransport() self.assertRaises(errors.NoSuchFile, t.put_file, 'dir/path', StringIO('content'))
def test_append_without_dir_fails(self): t = memory.MemoryTransport() self.assertRaises(errors.NoSuchFile, t.append_bytes, 'dir/path', 'content')
def test_get_url(self): backing_transport = memory.MemoryTransport() server = chroot.ChrootServer(backing_transport) server.start_server() self.addCleanup(server.stop_server) self.assertEqual('chroot-%d:///' % id(server), server.get_url())
def test_mkdir_missing_parent(self): t = memory.MemoryTransport() self.assertRaises(errors.NoSuchFile, t.mkdir, 'dir/dir')
def test_clone(self): t = memory.MemoryTransport() self.assertTrue(isinstance(t, memory.MemoryTransport)) self.assertEqual("memory:///", t.clone("/").base)
def test_mkdir_twice(self): t = memory.MemoryTransport() t.mkdir('dir') self.assertRaises(errors.FileExists, t.mkdir, 'dir')
def test_local_abspath_non_local_transport(self): # the base implementation should throw t = memory.MemoryTransport() e = self.assertRaises(errors.NotLocalUrl, t.local_abspath, 't') self.assertEqual('memory:///t is not a local path.', str(e))
def test_abspath_of_relpath_starting_at_root(self): t = memory.MemoryTransport() self.assertEqual("memory:///foo", t.abspath('/foo'))