summaryrefslogtreecommitdiff
path: root/django/test/testcases.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/test/testcases.py')
-rw-r--r--django/test/testcases.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 2752fc646b..cc1da67fb2 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -1201,9 +1201,9 @@ class _MediaFilesHandler(FSFilesHandler):
class LiveServerThread(threading.Thread):
"""Thread for running a live http server while the tests are running."""
- def __init__(self, host, static_handler, connections_override=None):
+ def __init__(self, host, static_handler, connections_override=None, port=0):
self.host = host
- self.port = None
+ self.port = port
self.is_ready = threading.Event()
self.error = None
self.static_handler = static_handler
@@ -1223,8 +1223,10 @@ class LiveServerThread(threading.Thread):
try:
# Create the handler for serving static and media files
handler = self.static_handler(_MediaFilesHandler(WSGIHandler()))
- self.httpd = self._create_server(0)
- self.port = self.httpd.server_address[1]
+ self.httpd = self._create_server()
+ # If binding to port zero, assign the port allocated by the OS.
+ if self.port == 0:
+ self.port = self.httpd.server_address[1]
self.httpd.set_app(handler)
self.is_ready.set()
self.httpd.serve_forever()
@@ -1234,8 +1236,8 @@ class LiveServerThread(threading.Thread):
finally:
connections.close_all()
- def _create_server(self, port):
- return ThreadedWSGIServer((self.host, port), QuietWSGIRequestHandler, allow_reuse_address=False)
+ def _create_server(self):
+ return ThreadedWSGIServer((self.host, self.port), QuietWSGIRequestHandler, allow_reuse_address=False)
def terminate(self):
if hasattr(self, 'httpd'):
@@ -1257,6 +1259,7 @@ class LiveServerTestCase(TransactionTestCase):
thread can see the changes.
"""
host = 'localhost'
+ port = 0
server_thread_class = LiveServerThread
static_handler = _StaticFilesHandler
@@ -1298,6 +1301,7 @@ class LiveServerTestCase(TransactionTestCase):
cls.host,
cls.static_handler,
connections_override=connections_override,
+ port=cls.port,
)
@classmethod