##// END OF EJS Templates
py3: handle keyword arguments correctly in hgext/patchbomb.py...
py3: handle keyword arguments correctly in hgext/patchbomb.py The keys of keyword arguments must be str on Python 3 which is unicode. This patch make sure we pass keyword arguments with keys are str everywhere in this file and access the keys depending on whether they are bytes or str. This patch uses pycompat.{byteskwargs|strkwargs} and somewhere it also added r'' to prevent transformer from adding a b'' over there. Differential Revision: https://phab.mercurial-scm.org/D974

File last commit:

r34945:bf2db35a stable
r35035:71e63fe6 default
Show More
dumbhttp.py
72 lines | 2.4 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
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':
class simplehttpserver(httpserver.httpserver):
address_family = socket.AF_INET6
else:
simplehttpserver = httpserver.httpserver
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()
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)
def init(self):
Yuya Nishihara
test-static-http: flush access log per request...
r34945 self.httpd = simplehttpserver(self.address, _httprequesthandler)
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
if __name__ == '__main__':
parser = OptionParser()
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')
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959 parser.add_option('--pid', dest='pid',
help='file name where the PID of the server is stored')
parser.add_option('-f', '--foreground', dest='foreground',
action='store_true',
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:
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")
Yuya Nishihara
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()...
r23136 opts = {'pid_file': options.pid,
'daemon': not options.foreground,
Jun Wu
serve: rename --daemon-pipefds to --daemon-postexec (BC)...
r28194 'daemon_postexec': 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)
Yuya Nishihara
server: move cmdutil.service() to new module (API)...
r30506 server.runservice(opts, initfn=service.init, runfn=service.run,
Yuya Nishihara
test-static-http: show all files accessed over HTTP...
r34926 logfile=options.logfile,
Yuya Nishihara
server: move cmdutil.service() to new module (API)...
r30506 runargs=[sys.executable, __file__] + sys.argv[1:])