Mercurial > hg-stable
view tests/dumbhttp.py @ 23101:b564330d4b1f stable
amend: abort early if no username is configured with evolve enabled (issue4211)
Amend will reuse the original username if a new one is not provided
with -U, but obsolete.createmarkers() only considers ui.username() for
the obsolete marker's metadata. Allowing the metadata field to be
spoofed seems to defeat the point of the field in the first place.
This covers 'evolve amend' and 'ci --amend' with evolve enabled.
Without this, the transaction aborts but the parent changeset is set to -1. The
corresponding test will be added to evolve separately.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 28 Oct 2014 23:05:19 -0400 |
parents | 10116463b0b1 |
children | 6eab50a34fed |
line wrap: on
line source
#!/usr/bin/env python """ Small and dumb HTTP server for use in tests. """ from optparse import OptionParser import BaseHTTPServer, SimpleHTTPServer, os, signal, subprocess, sys def run(server_class=BaseHTTPServer.HTTPServer, handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler, server_address=('localhost', 8000)): httpd = server_class(server_address, handler_class) httpd.serve_forever() 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') 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') (options, args) = parser.parse_args() signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) if options.foreground and options.pid: parser.error("options --pid and --foreground are mutually exclusive") if options.foreground: run(server_address=(options.host, options.port)) else: # This doesn't attempt to cleanly detach the process, as it's not # meant to be a long-lived, independent process. As a consequence, # it's still part of the same process group, and keeps any file # descriptors it might have inherited besided stdin/stdout/stderr. # Trying to do things cleanly is more complicated, requires # OS-dependent code, and is not worth the effort. proc = subprocess.Popen([sys.executable, __file__, '-f', '-H', options.host, '-p', str(options.port)], stdin=open(os.devnull, 'r'), stdout=open(os.devnull, 'w'), stderr=subprocess.STDOUT) if options.pid: fp = file(options.pid, 'wb') fp.write(str(proc.pid) + '\n') fp.close()