summaryrefslogtreecommitdiff
path: root/tests/servers
diff options
context:
space:
mode:
authorPetter Strandmark <petter.strandmark@gmail.com>2020-12-11 14:05:36 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-12-14 20:46:18 +0100
commit28124e7bdf165689f92d667af1b77169ec75486c (patch)
tree50b7f2655115b21f6953fb4c735cd4873b9a3996 /tests/servers
parentcf2ca22a5797cdd53a10954e9811893325b24a30 (diff)
downloaddjango-28124e7bdf165689f92d667af1b77169ec75486c.tar.gz
Refs #4444 -- Added tests for handling broken pipe errors in WSGIServer.
Diffstat (limited to 'tests/servers')
-rw-r--r--tests/servers/test_basehttp.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/tests/servers/test_basehttp.py b/tests/servers/test_basehttp.py
index 32fdbf3c0e..4c685b282f 100644
--- a/tests/servers/test_basehttp.py
+++ b/tests/servers/test_basehttp.py
@@ -1,9 +1,10 @@
from io import BytesIO
from django.core.handlers.wsgi import WSGIRequest
-from django.core.servers.basehttp import WSGIRequestHandler
+from django.core.servers.basehttp import WSGIRequestHandler, WSGIServer
from django.test import SimpleTestCase
from django.test.client import RequestFactory
+from django.test.utils import captured_stderr
class Stub:
@@ -102,3 +103,25 @@ class WSGIRequestHandlerTestCase(SimpleTestCase):
body = list(wfile.readlines())[-1]
self.assertEqual(body, b'HTTP_SOME_HEADER:good')
+
+
+class WSGIServerTestCase(SimpleTestCase):
+ request_factory = RequestFactory()
+
+ def test_broken_pipe_errors(self):
+ """WSGIServer handles broken pipe errors."""
+ request = WSGIRequest(self.request_factory.get('/').environ)
+ client_address = ('192.168.2.0', 8080)
+ msg = f'- Broken pipe from {client_address}\n'
+ try:
+ server = WSGIServer(('localhost', 0), WSGIRequestHandler)
+ try:
+ raise BrokenPipeError()
+ except Exception:
+ with captured_stderr() as err:
+ with self.assertLogs('django.server', 'INFO') as cm:
+ server.handle_error(request, client_address)
+ self.assertEqual(err.getvalue(), '')
+ self.assertEqual(cm.records[0].getMessage(), msg)
+ finally:
+ server.server_close()