view tests/hghave @ 38706:ea63a2004d09

update: print warning about hidden changeset after update When an attempt to update to a hidden changeset fails because the working copy is dirty, you may get a message like this: updating to a hidden changeset 343f6de32686 (hidden revision '343f6de32686' was rewritten as: 4ab941244072) abort: conflicting changes (commit or update --clean to discard changes) It's easy to miss the real error here. This patch moves the warning about the hidden changeset to after the update has happened. It changes the verb tense accordingly (and drops the "a" that I think it sounds better without). Of course, this means that the commit isn't actually hidden anymore when the message is printed. I think that's fine. Differential Revision: https://phab.mercurial-scm.org/D3479
author Martin von Zweigbergk <martinvonz@google.com>
date Mon, 07 May 2018 19:43:43 -0700
parents b1b35a9051c3
children
line wrap: on
line source

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