def test_write_soon_filewrapper(self): from waitress.buffers import ReadOnlyFileBasedBuffer f = io.BytesIO(b'abc') wrapper = ReadOnlyFileBasedBuffer(f, 8192) wrapper.prepare() inst, sock, map = self._makeOneWithMap() outbufs = inst.outbufs orig_outbuf = outbufs[0] wrote = inst.write_soon(wrapper) self.assertEqual(wrote, 3) self.assertEqual(len(outbufs), 3) self.assertEqual(outbufs[0], orig_outbuf) self.assertEqual(outbufs[1], wrapper) self.assertEqual(outbufs[2].__class__.__name__, 'OverflowableBuffer')
def test_write_soon_filewrapper(self): from waitress.buffers import ReadOnlyFileBasedBuffer f = io.BytesIO(b"abc") wrapper = ReadOnlyFileBasedBuffer(f, 8192) wrapper.prepare() inst, sock, map = self._makeOneWithMap() # _flush_some will no longer flush def send(_): return 0 sock.send = send outbufs = inst.outbufs wrote = inst.write_soon(wrapper) self.assertEqual(wrote, 3) self.assertEqual(len(outbufs), 2) self.assertEqual(outbufs[0], wrapper) self.assertEqual(outbufs[1].__class__.__name__, "OverflowableBuffer")
def test_execute_app_returns_filewrapper_prepare_returns_True(self): from waitress.buffers import ReadOnlyFileBasedBuffer f = io.BytesIO(b'abc') app_iter = ReadOnlyFileBasedBuffer(f, 8192) def app(environ, start_response): start_response('200 OK', [('Content-Length', '3')]) return app_iter inst = self._makeOne() inst.channel.server.application = app inst.execute() self.assertTrue(inst.channel.written) # header self.assertEqual(inst.channel.otherdata, [app_iter])
def test_execute_app_returns_filewrapper_prepare_returns_True_badcl(self): from waitress.buffers import ReadOnlyFileBasedBuffer f = io.BytesIO(b"abc") app_iter = ReadOnlyFileBasedBuffer(f, 8192) def app(environ, start_response): start_response("200 OK", []) return app_iter inst = self._makeOne() inst.channel.server.application = app inst.content_length = 10 inst.response_headers = [("Content-Length", "10")] inst.execute() self.assertTrue(inst.channel.written) # header self.assertEqual(inst.channel.otherdata, [app_iter]) self.assertEqual(inst.content_length, 3) self.assertEqual(dict(inst.response_headers)["Content-Length"], "3")
def _makeOne(self, file, block_size=8192): from waitress.buffers import ReadOnlyFileBasedBuffer return ReadOnlyFileBasedBuffer(file, block_size)
def _makeOne(self, file, block_size=8192): from waitress.buffers import ReadOnlyFileBasedBuffer buf = ReadOnlyFileBasedBuffer(file, block_size) self.buffers_to_close.append(buf) return buf