diff options
| author | Robert Rollins <rrollins@caltech.edu> | 2017-05-22 10:16:56 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-05-30 18:49:10 -0400 |
| commit | b6d4b6e5445323c4a8a423d34c2ec9a30864ce19 (patch) | |
| tree | e1205721cfee32acc87d1e92a914cbdebe063728 /django/test/testcases.py | |
| parent | a30482a4b6e5d13e7325238fdc902fbca7e714f4 (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.py | 16 |
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 |
