summaryrefslogtreecommitdiff
path: root/django/test/testcases.py
diff options
context:
space:
mode:
authorRobert Rollins <rrollins@caltech.edu>2017-05-22 10:16:56 -0700
committerTim Graham <timograham@gmail.com>2017-05-30 18:49:10 -0400
commitb6d4b6e5445323c4a8a423d34c2ec9a30864ce19 (patch)
treee1205721cfee32acc87d1e92a914cbdebe063728 /django/test/testcases.py
parenta30482a4b6e5d13e7325238fdc902fbca7e714f4 (diff)
Fixed #28212 -- Allowed customizing the port that LiveServerTestCase uses.
Forwardport of 877d7b71ae952b3bc946e5187d6c23039a71614d from stable/1.11.x
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