Refs #32416 -- Added LiveServerThread.server_class to ease subclassing.

This commit is contained in:
Chris Jerdonek 2021-02-11 18:32:09 -08:00 committed by Mariusz Felisiak
parent 0963f184ab
commit 91c243f80f
2 changed files with 23 additions and 1 deletions

View File

@ -1448,6 +1448,8 @@ class _MediaFilesHandler(FSFilesHandler):
class LiveServerThread(threading.Thread): class LiveServerThread(threading.Thread):
"""Thread for running a live http server while the tests are running.""" """Thread for running a live http server while the tests are running."""
server_class = ThreadedWSGIServer
def __init__(self, host, static_handler, connections_override=None, port=0): def __init__(self, host, static_handler, connections_override=None, port=0):
self.host = host self.host = host
self.port = port self.port = port
@ -1484,7 +1486,11 @@ class LiveServerThread(threading.Thread):
connections.close_all() connections.close_all()
def _create_server(self): def _create_server(self):
return ThreadedWSGIServer((self.host, self.port), QuietWSGIRequestHandler, allow_reuse_address=False) return self.server_class(
(self.host, self.port),
QuietWSGIRequestHandler,
allow_reuse_address=False,
)
def terminate(self): def terminate(self):
if hasattr(self, 'httpd'): if hasattr(self, 'httpd'):

View File

@ -1,5 +1,6 @@
from django.db import DEFAULT_DB_ALIAS, connections from django.db import DEFAULT_DB_ALIAS, connections
from django.test import LiveServerTestCase, TestCase from django.test import LiveServerTestCase, TestCase
from django.test.testcases import LiveServerThread
class LiveServerThreadTest(TestCase): class LiveServerThreadTest(TestCase):
@ -23,3 +24,18 @@ class LiveServerThreadTest(TestCase):
self.assertFalse(conn.is_usable()) self.assertFalse(conn.is_usable())
finally: finally:
conn.dec_thread_sharing() conn.dec_thread_sharing()
def test_server_class(self):
class FakeServer:
def __init__(*args, **kwargs):
pass
class MyServerThread(LiveServerThread):
server_class = FakeServer
class MyServerTestCase(LiveServerTestCase):
server_thread_class = MyServerThread
thread = MyServerTestCase._create_server_thread(None)
server = thread._create_server()
self.assertIs(type(server), FakeServer)