Skip to content
Snippets Groups Projects
Commit cca56bbe authored by Tony Tung's avatar Tony Tung
Browse files

tests: copy hg test infra from hg repo @5cfdf6137af8

parent bb255eaf
No related branches found
Tags 0.8.1
No related merge requests found
......@@ -3,4 +3,8 @@
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
......@@ -6,2 +10,3 @@
import optparse
import os
import sys
......@@ -7,6 +12,5 @@
import sys
import hghave
checks = hghave.checks
def list_features():
......@@ -9,6 +13,6 @@
checks = hghave.checks
def list_features():
for name, feature in checks.iteritems():
for name, feature in sorted(checks.items()):
desc = feature[1]
......@@ -14,5 +18,5 @@
desc = feature[1]
print name + ':', desc
print(name + ':', desc)
def test_features():
failed = 0
......@@ -16,7 +20,7 @@
def test_features():
failed = 0
for name, feature in checks.iteritems():
for name, feature in checks.items():
check, _ = feature
try:
check()
......@@ -20,8 +24,8 @@
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,8 +34,27 @@
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()
......@@ -35,6 +58,7 @@
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)
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment