tests/hghave
author Pulkit Goyal <7895pulkit@gmail.com>
Sat, 17 Jun 2017 20:10:22 +0530
changeset 33548 4cd4344a53c4
parent 29231 b1b35a9051c3
child 43691 47ef023d0165
permissions -rwxr-xr-x
status: add a flag to terse the output (issue4119) This adds an experimental flag -t/--terse which will terse the output. The terse flag will respect other flags which filters the output. The flag takes a string whose value can be a subsequence of "marduic" (the order does not matter here.) Ignored files are not considered while tersing unless -i flag is passed or 'i' is there is the terse flag value. The flag is experimental for testing as there may be cases which will produce strange results with the flag. We can set the terse on by default by simply passing 'u' to the cmdutil.tersestatus(). This patch also adds a test file with tests covering the new feature.

#!/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 absolute_import, print_function

import hghave
import optparse
import os
import sys

checks = hghave.checks

def list_features():
    for name, feature in sorted(checks.items()):
        desc = feature[1]
        print(name + ':', desc)

def test_features():
    failed = 0
    for name, feature in checks.items():
        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
        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)

    if options.test_features:
        sys.exit(test_features())

    hghave.require(args)