Mercurial > hg
view tests/printenv.py @ 52289:323e3626929a
sslutil: add support for clients to set TLSv1.3 as the minimum protocol
AFAICT, all of the TLS versions are supported by the server without doing any
explicit work, and there's only a `devel` config to specify an exact version on
the server side. Clients would also use TLSv1.3 if available, but this prevents
the server from negotiating down. This also causes "tls1.3" to be listed in
`hg debuginstall`, even though it was previously supported (if the Python
intepreter supported it- IDK if there's a good way to proactively test for and
show future protocols without requiring manual updates like this).
The v1.3 tests are nested inside the v1.2 tests for simplicity. The v1.2 blocks
already assume v1.0 and v1.1 support, so this seems reasonable for now. If/when
the older protocols start getting dropped, this will have to be reworked anyway.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 21 Dec 2020 20:21:46 -0500 |
parents | 6000f5b25c9b |
children |
line wrap: on
line source
#!/usr/bin/env python3 # # simple script to be used in hooks # # put something like this in the repo .hg/hgrc: # # [hooks] # changegroup = python "$TESTDIR/printenv.py" <hookname> [exit] [output] # # - <hookname> is a mandatory argument (e.g. "changegroup") # - [exit] is the exit code of the hook (default: 0) # - [output] is the name of the output file (default: use sys.stdout) # the file will be opened in append mode. # import argparse import os import sys try: import msvcrt msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) except ImportError: pass parser = argparse.ArgumentParser() parser.add_argument("name", help="the hook name, used for display") parser.add_argument( "exitcode", nargs="?", default=0, type=int, help="the exit code for the hook", ) parser.add_argument( "out", nargs="?", default=None, help="where to write the output" ) parser.add_argument( "--line", action="store_true", help="print environment variables one per line instead of on a single line", ) args = parser.parse_args() if args.out is None: out = sys.stdout out = getattr(out, "buffer", out) else: out = open(args.out, "ab") # variables with empty values may not exist on all platforms, filter # them now for portability sake. env = [(k, v) for k, v in os.environ.items() if k.startswith("HG_") and v] env.sort() out.write(b"%s hook: " % args.name.encode('ascii')) if os.name == 'nt': filter = lambda x: x.replace('\\', '/') else: filter = lambda x: x vars = [ b"%s=%s" % (k.encode('ascii'), filter(v).encode('ascii')) for k, v in env ] # Print variables on out if not args.line: out.write(b" ".join(vars)) else: for var in vars: out.write(var) out.write(b"\n") out.write(b"\n") out.close() sys.exit(args.exitcode)