hghave
78 lines
| 1.8 KiB
| text/plain
|
TextLexer
/ tests / hghave
Gregory Szorc
|
r46434 | #!/usr/bin/env python3 | ||
Patrick Mezard
|
r4881 | """Test the running system for features availability. Exit with zero | ||
Patrick Mezard
|
r5084 | if all features are there, non-zero otherwise. If a feature name is | ||
prefixed with "no-", the absence of feature is tested. | ||||
Patrick Mezard
|
r4881 | """ | ||
Gregory Szorc
|
r28283 | |||
Pulkit Goyal
|
r29161 | from __future__ import absolute_import, print_function | ||
Gregory Szorc
|
r28283 | |||
Pulkit Goyal
|
r29161 | import hghave | ||
Patrick Mezard
|
r4881 | import optparse | ||
Pulkit Goyal
|
r29161 | import os | ||
import sys | ||||
Martin Geisler
|
r9446 | |||
Adrian Buehlmann
|
r16966 | checks = hghave.checks | ||
Patrick Mezard
|
r4881 | |||
Gregory Szorc
|
r44089 | |||
Patrick Mezard
|
r4881 | def list_features(): | ||
timeless
|
r29141 | for name, feature in sorted(checks.items()): | ||
Patrick Mezard
|
r4881 | desc = feature[1] | ||
Gregory Szorc
|
r28283 | print(name + ':', desc) | ||
Patrick Mezard
|
r4881 | |||
Gregory Szorc
|
r44089 | |||
Nicolas Dumazet
|
r8059 | def test_features(): | ||
failed = 0 | ||||
timeless
|
r29141 | for name, feature in checks.items(): | ||
Nicolas Dumazet
|
r8059 | check, _ = feature | ||
try: | ||||
check() | ||||
FUJIWARA Katsunori
|
r28047 | except Exception as e: | ||
Gregory Szorc
|
r28283 | print("feature %s failed: %s" % (name, e)) | ||
Nicolas Dumazet
|
r8059 | failed += 1 | ||
return failed | ||||
Gregory Szorc
|
r44089 | |||
Patrick Mezard
|
r4881 | parser = optparse.OptionParser("%prog [options] [features]") | ||
Gregory Szorc
|
r44089 | parser.add_option( | ||
"--test-features", action="store_true", help="test available features" | ||||
) | ||||
parser.add_option( | ||||
"--list-features", action="store_true", help="list available features" | ||||
) | ||||
Patrick Mezard
|
r4881 | |||
Gregory Szorc
|
r26068 | def _loadaddon(): | ||
FUJIWARA Katsunori
|
r25732 | 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 | ||||
Gregory Szorc
|
r44089 | |||
Yuya Nishihara
|
r29231 | assert hghaveaddon # silence pyflakes | ||
FUJIWARA Katsunori
|
r28047 | except BaseException as inst: | ||
Gregory Szorc
|
r44089 | sys.stderr.write( | ||
'failed to import hghaveaddon.py from %r: %s\n' % (path, inst) | ||||
) | ||||
FUJIWARA Katsunori
|
r25732 | sys.exit(2) | ||
sys.path.pop(0) | ||||
Gregory Szorc
|
r44089 | |||
Patrick Mezard
|
r4881 | if __name__ == '__main__': | ||
options, args = parser.parse_args() | ||||
Gregory Szorc
|
r26068 | _loadaddon() | ||
Patrick Mezard
|
r4881 | if options.list_features: | ||
list_features() | ||||
sys.exit(0) | ||||
Thomas Arendsen Hein
|
r5081 | |||
Nicolas Dumazet
|
r8059 | if options.test_features: | ||
sys.exit(test_features()) | ||||
Gregory Szorc
|
r26068 | hghave.require(args) | ||