diff --git a/tests/simple_server.py b/tests/simple_server.py index 26d0d51382..77ab04f182 100755 --- a/tests/simple_server.py +++ b/tests/simple_server.py @@ -37,6 +37,7 @@ import random import six +from six.moves.SimpleHTTPServer import SimpleHTTPRequestHandler PORT = 0 @@ -55,7 +56,22 @@ def _port_gen(): else: PORT = _port_gen() -Handler = six.moves.SimpleHTTPServer.SimpleHTTPRequestHandler -httpd = six.moves.socketserver.TCPServer(('', PORT), Handler) + +class QuietHTTPRequestHandler(SimpleHTTPRequestHandler): + """A SimpleHTTPRequestHandler that does not write incoming requests to + stderr. """ + def log_request(self, code='-', size='-'): + pass + +# NOTE: On Windows/Python2 tests that use this simple_server.py in a +# subprocesses hang after a certain amount of requests (~68), if a PIPE is +# passed as Popen's stderr argument. As a simple workaround we silence the +# server on those Windows/Py2 to not fill the buffer. +if six.PY2 and platform.system() == 'Windows': + handler = QuietHTTPRequestHandler +else: + handler = SimpleHTTPRequestHandler + +httpd = six.moves.socketserver.TCPServer(('', PORT), handler) httpd.serve_forever()