summaryrefslogtreecommitdiff
path: root/tests/regressiontests/builtin_server
diff options
context:
space:
mode:
authorJacob Kaplan-Moss <jacob@jacobian.org>2009-05-07 15:39:06 +0000
committerJacob Kaplan-Moss <jacob@jacobian.org>2009-05-07 15:39:06 +0000
commitbfdb7d26aa534578dbac3c43e76d8ac3a5ad6a06 (patch)
treea213cc5592e01137ff1ab4fdf9d5d8ef68ef0bea /tests/regressiontests/builtin_server
parent523da3801d07e27556b33661bc175138a9456410 (diff)
Fixed #9659: fixed `wsgi.file_wrapper` in the builtin server. Thanks, mitsuhiko.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10690 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/builtin_server')
-rw-r--r--tests/regressiontests/builtin_server/__init__.py0
-rw-r--r--tests/regressiontests/builtin_server/models.py0
-rw-r--r--tests/regressiontests/builtin_server/tests.py51
3 files changed, 51 insertions, 0 deletions
diff --git a/tests/regressiontests/builtin_server/__init__.py b/tests/regressiontests/builtin_server/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/builtin_server/__init__.py
diff --git a/tests/regressiontests/builtin_server/models.py b/tests/regressiontests/builtin_server/models.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/regressiontests/builtin_server/models.py
diff --git a/tests/regressiontests/builtin_server/tests.py b/tests/regressiontests/builtin_server/tests.py
new file mode 100644
index 0000000000..ad3abc9e9f
--- /dev/null
+++ b/tests/regressiontests/builtin_server/tests.py
@@ -0,0 +1,51 @@
+from unittest import TestCase
+from StringIO import StringIO
+from django.core.servers.basehttp import ServerHandler
+
+#
+# Tests for #9659: wsgi.file_wrapper in the builtin server.
+# We need to mock a couple of 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('200 OK', [('Content-Type', 'text/plain')])
+ return ['Hello World!']
+
+def wsgi_app_file_wrapper(environ, start_response):
+ start_response('200 OK', [('Content-Type', 'text/plain')])
+ return environ['wsgi.file_wrapper'](StringIO('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'}
+ err = StringIO()
+ handler = FileWrapperHandler(None, StringIO(), err, env)
+ handler.run(wsgi_app_file_wrapper)
+ self.assert_(handler._used_sendfile)
+
+ def test_file_wrapper_no_sendfile(self):
+ env = {'SERVER_PROTOCOL': 'HTTP/1.0'}
+ err = StringIO()
+ handler = FileWrapperHandler(None, StringIO(), err, env)
+ handler.run(wsgi_app)
+ self.failIf(handler._used_sendfile)
+ self.assertEqual(handler.stdout.getvalue().splitlines()[-1],'Hello World!')