##// END OF EJS Templates
tests: finally fix up test-fuzz-targets.t...
tests: finally fix up test-fuzz-targets.t It's been failing on my workstation for a while, since I have a new enough LLVM that I had the fuzzer goo, but not so new that I actually had FuzzedDataProvider. This is a better solution all around in my opinion. I _believe_ this should let us run these tests on most systems, even those using GCC instead of clang. That said, my one attempt to test this on my macOS laptop failed miserably, and I don't feel like doing more work on this right now. Differential Revision: https://phab.mercurial-scm.org/D7566

File last commit:

r43346:2372284d default
r44267:19da643d default
Show More
dumbhttp.py
113 lines | 2.7 KiB | text/x-python | PythonLexer
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959 #!/usr/bin/env python
Gregory Szorc
tests/dumbhttp: use absolute_import
r27282 from __future__ import absolute_import
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959 """
Small and dumb HTTP server for use in tests.
"""
Gregory Szorc
tests/dumbhttp: use absolute_import
r27282 import optparse
Jun Wu
dumbhttp: use IPv6 if HGIPV6 is set to 1...
r31004 import os
Gregory Szorc
tests/dumbhttp: use absolute_import
r27282 import signal
Jun Wu
dumbhttp: use IPv6 if HGIPV6 is set to 1...
r31004 import socket
Gregory Szorc
tests/dumbhttp: use absolute_import
r27282 import sys
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959
Gregory Szorc
tests/dumbhttp: use absolute_import
r27282 from mercurial import (
Yuya Nishihara
py3: fix dumbhttp.py to convert --daemon-postexec arguments back to bytes
r38612 encoding,
Pulkit Goyal
py3: make values bytes before passing into server.runservice()...
r37690 pycompat,
Yuya Nishihara
server: move cmdutil.service() to new module (API)...
r30506 server,
Pulkit Goyal
py3: conditionalize BaseHTTPServer, SimpleHTTPServer and CGIHTTPServer import...
r29566 util,
Gregory Szorc
tests/dumbhttp: use absolute_import
r27282 )
Pulkit Goyal
py3: conditionalize BaseHTTPServer, SimpleHTTPServer and CGIHTTPServer import...
r29566 httpserver = util.httpserver
Gregory Szorc
tests/dumbhttp: use absolute_import
r27282 OptionParser = optparse.OptionParser
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959
Jun Wu
dumbhttp: use IPv6 if HGIPV6 is set to 1...
r31004 if os.environ.get('HGIPV6', '0') == '1':
Augie Fackler
formatting: blacken the codebase...
r43346
Jun Wu
dumbhttp: use IPv6 if HGIPV6 is set to 1...
r31004 class simplehttpserver(httpserver.httpserver):
address_family = socket.AF_INET6
Augie Fackler
formatting: blacken the codebase...
r43346
Jun Wu
dumbhttp: use IPv6 if HGIPV6 is set to 1...
r31004 else:
simplehttpserver = httpserver.httpserver
Augie Fackler
formatting: blacken the codebase...
r43346
Yuya Nishihara
test-static-http: flush access log per request...
r34945 class _httprequesthandler(httpserver.simplehttprequesthandler):
def log_message(self, format, *args):
httpserver.simplehttprequesthandler.log_message(self, format, *args)
sys.stderr.flush()
Augie Fackler
formatting: blacken the codebase...
r43346
Yuya Nishihara
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()...
r23136 class simplehttpservice(object):
def __init__(self, host, port):
self.address = (host, port)
Augie Fackler
formatting: blacken the codebase...
r43346
Yuya Nishihara
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()...
r23136 def init(self):
Yuya Nishihara
test-static-http: flush access log per request...
r34945 self.httpd = simplehttpserver(self.address, _httprequesthandler)
Augie Fackler
formatting: blacken the codebase...
r43346
Yuya Nishihara
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()...
r23136 def run(self):
self.httpd.serve_forever()
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959
Augie Fackler
formatting: blacken the codebase...
r43346
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959 if __name__ == '__main__':
parser = OptionParser()
Augie Fackler
formatting: blacken the codebase...
r43346 parser.add_option(
'-p',
'--port',
dest='port',
type='int',
default=8000,
help='TCP port to listen on',
metavar='PORT',
)
parser.add_option(
'-H',
'--host',
dest='host',
default='localhost',
help='hostname or IP to listen on',
metavar='HOST',
)
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926 parser.add_option('--logfile', help='file name of access/error log')
Augie Fackler
formatting: blacken the codebase...
r43346 parser.add_option(
'--pid',
dest='pid',
help='file name where the PID of the server is stored',
)
parser.add_option(
'-f',
'--foreground',
dest='foreground',
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959 action='store_true',
Augie Fackler
formatting: blacken the codebase...
r43346 help='do not start the HTTP server in the background',
)
Jun Wu
serve: accept multiple values for --daemon-postexec...
r28451 parser.add_option('--daemon-postexec', action='append')
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959
(options, args) = parser.parse_args()
signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0))
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926 if options.foreground and options.logfile:
Augie Fackler
formatting: blacken the codebase...
r43346 parser.error(
"options --logfile and --foreground are mutually " "exclusive"
)
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959 if options.foreground and options.pid:
parser.error("options --pid and --foreground are mutually exclusive")
Augie Fackler
formatting: blacken the codebase...
r43346 opts = {
b'pid_file': options.pid,
b'daemon': not options.foreground,
b'daemon_postexec': pycompat.rapply(
encoding.strtolocal, options.daemon_postexec
),
}
Yuya Nishihara
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()...
r23136 service = simplehttpservice(options.host, options.port)
Pulkit Goyal
py3: make values bytes before passing into server.runservice()...
r37690 runargs = [sys.executable, __file__] + sys.argv[1:]
runargs = [pycompat.fsencode(a) for a in runargs]
Augie Fackler
formatting: blacken the codebase...
r43346 server.runservice(
opts,
initfn=service.init,
runfn=service.run,
logfile=options.logfile,
runargs=runargs,
)