Mercurial > hg-git
diff tests/hghave @ 1106:cca56bbea143
tests: copy hg test infra from hg repo @5cfdf6137af8
author | Tony Tung <ttung@chanzuckerberg.com <mailto:ttung@chanzuckerberg.com>> |
---|---|
date | Tue, 06 Feb 2018 16:34:28 -0800 |
parents | 8c6dc6a6f5d8 |
children |
line wrap: on
line diff
--- a/tests/hghave Tue Feb 06 12:12:49 2018 -0600 +++ b/tests/hghave Tue Feb 06 16:34:28 2018 -0800 @@ -3,25 +3,29 @@ 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 absolute_import, print_function + +import hghave import optparse +import os import sys -import hghave checks = hghave.checks def list_features(): - for name, feature in checks.iteritems(): + for name, feature in sorted(checks.items()): desc = feature[1] - print name + ':', desc + print(name + ':', desc) def test_features(): failed = 0 - for name, feature in checks.iteritems(): + for name, feature in checks.items(): check, _ = feature try: check() - except Exception, e: - print "feature %s failed: %s" % (name, e) + except Exception as e: + print("feature %s failed: %s" % (name, e)) failed += 1 return failed @@ -30,11 +34,31 @@ help="test available features") parser.add_option("--list-features", action="store_true", help="list available features") -parser.add_option("-q", "--quiet", action="store_true", - help="check features silently") + +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 + assert hghaveaddon # silence pyflakes + 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) @@ -42,36 +66,4 @@ if options.test_features: sys.exit(test_features()) - quiet = options.quiet - - failures = 0 - - def error(msg): - global failures - if not quiet: - sys.stderr.write(msg + '\n') - failures += 1 - - for feature in args: - negate = feature.startswith('no-') - if negate: - feature = feature[3:] - - if feature not in checks: - error('skipped: unknown feature: ' + feature) - continue - - check, desc = checks[feature] - try: - available = check() - except Exception, e: - error('hghave check failed: ' + feature) - continue - - if not negate and not available: - error('skipped: missing feature: ' + desc) - elif negate and available: - error('skipped: system supports %s' % desc) - - if failures != 0: - sys.exit(1) + hghave.require(args)