diff --git a/tests/hghave b/tests/hghave new file mode 100755 --- /dev/null +++ b/tests/hghave @@ -0,0 +1,55 @@ +#!/usr/bin/env python +"""Test the running system for features availability. Exit with zero +if all features are there, non-zero otherwise. +""" +import optparse +import os +import sys + +def has_symlink(): + return hasattr(os, "symlink") + +checks = { + "symlink": (has_symlink, "symbolic links"), +} + +def list_features(): + for name, feature in checks.iteritems(): + desc = feature[1] + print name + ':', desc + +parser = optparse.OptionParser("%prog [options] [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") + +if __name__ == '__main__': + options, args = parser.parse_args() + if options.list_features: + list_features() + sys.exit(0) + + quiet = options.quiet + + failures = 0 + + def error(msg): + global failures + if not quiet: + sys.stderr.write(msg + '\n') + failures += 1 + + for feature in args: + if feature not in checks: + error('hghave: unknown feature: ' + feature) + continue + + check, desc = checks[feature] + if not check(): + error('hghave: missing feature: ' + desc) + + if failures != 0: + sys.exit(1) + +