return chunk
def write(self, chunk, callback=None):
- """Implements `.HTTPConnection.write`."""
+ """Implements `.HTTPConnection.write`.
+
+ For backwards compatibility is is allowed but deprecated to
+ skip `write_headers` and instead call `write()` with a
+ pre-encoded header block.
+ """
if self.stream.closed():
self._write_future = Future()
self._write_future.set_exception(iostream.StreamClosedError())
self.assertEqual(data, b'')
finally:
stream.close()
+
+
+class LegacyInterfaceTest(AsyncHTTPTestCase):
+ def get_app(self):
+ # The old request_callback interface does not implement the
+ # delegate interface, and writes its response via request.write
+ # instead of request.connection.write_headers.
+ def handle_request(request):
+ message = b"Hello world"
+ request.write(utf8("HTTP/1.1 200 OK\r\n"
+ "Content-Length: %d\r\n\r\n" % len(message)))
+ request.write(message)
+ request.finish()
+ return handle_request
+
+ def test_legacy_interface(self):
+ response = self.fetch('/')
+ self.assertEqual(response.body, b"Hello world")