tests/hghave
author Pulkit Goyal <7895pulkit@gmail.com>
Mon, 10 Aug 2020 15:47:21 +0530
changeset 45385 05d19ca33b33
parent 43691 47ef023d0165
child 45830 c102b704edb5
permissions -rwxr-xr-x
mergestate: replace `addmergedother()` with generic `addcommitinfo()` (API) Storing that a file is resolved for the other parent while merging is just one case of things we will like to store in the mergestate. There are more which we will like to store. This patch replaces `addmergedother()` with a much more generic `addcommitinfo()`. Doing this, we also blinding stores the same key value pair generated by the merge code instead of touching them. Differential Revision: https://phab.mercurial-scm.org/D8923

#!/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)