From 89f40e36246100df6a11316c31a76712ebc6c501 Mon Sep 17 00:00:00 2001 From: Florian Apolloner Date: Tue, 26 Feb 2013 09:53:47 +0100 Subject: Merged regressiontests and modeltests into the test root. --- tests/builtin_server/__init__.py | 0 tests/builtin_server/models.py | 0 tests/builtin_server/tests.py | 55 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 tests/builtin_server/__init__.py create mode 100644 tests/builtin_server/models.py create mode 100644 tests/builtin_server/tests.py (limited to 'tests/builtin_server') diff --git a/tests/builtin_server/__init__.py b/tests/builtin_server/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/builtin_server/models.py b/tests/builtin_server/models.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/builtin_server/tests.py b/tests/builtin_server/tests.py new file mode 100644 index 0000000000..041bb3c319 --- /dev/null +++ b/tests/builtin_server/tests.py @@ -0,0 +1,55 @@ +from __future__ import unicode_literals + +from io import BytesIO + +from django.core.servers.basehttp import ServerHandler +from django.utils.unittest import TestCase + +# +# Tests for #9659: wsgi.file_wrapper in the builtin server. +# We need to mock a couple of handlers and keep track of what +# gets called when using a couple kinds of WSGI apps. +# + +class DummyHandler(object): + def log_request(*args, **kwargs): + pass + +class FileWrapperHandler(ServerHandler): + def __init__(self, *args, **kwargs): + ServerHandler.__init__(self, *args, **kwargs) + self.request_handler = DummyHandler() + self._used_sendfile = False + + def sendfile(self): + self._used_sendfile = True + return True + +def wsgi_app(environ, start_response): + start_response(str('200 OK'), [(str('Content-Type'), str('text/plain'))]) + return [b'Hello World!'] + +def wsgi_app_file_wrapper(environ, start_response): + start_response(str('200 OK'), [(str('Content-Type'), str('text/plain'))]) + return environ['wsgi.file_wrapper'](BytesIO(b'foo')) + +class WSGIFileWrapperTests(TestCase): + """ + Test that the wsgi.file_wrapper works for the builting server. + """ + + def test_file_wrapper_uses_sendfile(self): + env = {'SERVER_PROTOCOL': 'HTTP/1.0'} + handler = FileWrapperHandler(None, BytesIO(), BytesIO(), env) + handler.run(wsgi_app_file_wrapper) + self.assertTrue(handler._used_sendfile) + self.assertEqual(handler.stdout.getvalue(), b'') + self.assertEqual(handler.stderr.getvalue(), b'') + + def test_file_wrapper_no_sendfile(self): + env = {'SERVER_PROTOCOL': 'HTTP/1.0'} + handler = FileWrapperHandler(None, BytesIO(), BytesIO(), env) + handler.run(wsgi_app) + self.assertFalse(handler._used_sendfile) + self.assertEqual(handler.stdout.getvalue().splitlines()[-1], b'Hello World!') + self.assertEqual(handler.stderr.getvalue(), b'') -- cgit v1.2.1