tests/hghave
author Brodie Rao <brodie@bitheap.org>
Tue, 01 Nov 2011 12:25:54 -0700
branchstable
changeset 1109 8458561f6f94
parent 1098 72f57519a427
child 1182 e553e222bd7e
permissions -rwxr-xr-x
tests: fix readline escape characters in heredoctest.py/test-url.py This fix mirrors the changes made to test-doctest.py in b856071435f7 and 967adcf5910d. Without this change, tests running heredoctest.py can fail on certain versions of OS X when TERM is set to xterm-256color: $ /opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -m heredoctest <<EOF > >>> open('b', 'w').write('this' * 1000) > EOF + \x1b[?1034h (no-eol) (esc) A similar problem occurs with test-url.py: $ ./run-tests.py test-url.py --- .../tests/test-url.py.out +++ .../tests/test-url.py.err @@ -0,0 +1 @@ + ERROR: .../test-url.py output changed ! Failed test-url.py: output changed # Ran 1 tests, 0 skipped, 1 failed. [ original upstream message ]

#!/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.
"""
import optparse
import sys
import hghave

checks = hghave.checks

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

def test_features():
    failed = 0
    for name, feature in checks.iteritems():
        check, _ = feature
        try:
            check()
        except Exception, 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")
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)

    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)