sslutil: always use SSLContext
Now that we have a fake SSLContext instance, we can unify the code
paths for wrapping sockets to always use the SSLContext APIs.
Because this is security code, I've retained the try..except to
make the diff easier to read. It will be removed in the next patch.
I took the liberty of updating the inline docs about supported
protocols and how the constants work because this stuff is important
and needs to be explicitly documented.
#!/usr/bin/env python
"""Test the running system for features availability. Exit with zero
if all features are there, non-zero otherwise. If a feature name is
prefixed with "no-", the absence of feature is tested.
"""
from __future__ import print_function
import optparse
import os, sys
import hghave
checks = hghave.checks
def list_features():
for name, feature in sorted(checks.iteritems()):
desc = feature[1]
print(name + ':', desc)
def test_features():
failed = 0
for name, feature in checks.iteritems():
check, _ = feature
try:
check()
except Exception as e:
print("feature %s failed: %s" % (name, e))
failed += 1
return failed
parser = optparse.OptionParser("%prog [options] [features]")
parser.add_option("--test-features", action="store_true",
help="test available features")
parser.add_option("--list-features", action="store_true",
help="list available features")
def _loadaddon():
if 'TESTDIR' in os.environ:
# loading from '.' isn't needed, because `hghave` should be
# running at TESTTMP in this case
path = os.environ['TESTDIR']
else:
path = '.'
if not os.path.exists(os.path.join(path, 'hghaveaddon.py')):
return
sys.path.insert(0, path)
try:
import hghaveaddon
except BaseException as inst:
sys.stderr.write('failed to import hghaveaddon.py from %r: %s\n'
% (path, inst))
sys.exit(2)
sys.path.pop(0)
if __name__ == '__main__':
options, args = parser.parse_args()
_loadaddon()
if options.list_features:
list_features()
sys.exit(0)
if options.test_features:
sys.exit(test_features())
hghave.require(args)