tests/hghave
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Thu, 02 Aug 2007 01:56:08 -0300
changeset 5053 47a8ea1eb2c3
parent 4881 c51c9bc4579d
child 5086 4cf6f8dbd1b4
permissions -rwxr-xr-x
del transaction before lock before wlock This way rollbacks happen while the repo is still locked. Deleting lock before wlock is not strictly necessary, but is more consistent with the locking order.

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