test-revert: add methodical revert with explicit file path
We now also test reverting file to the working directory parent
content. However this differs from the previously introduced test by using
the explicit path of each "case file" when calling revert. This should
result in the same result regarding file content and backup creation,
but the output of the `hg revert` call should differ.
#!/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)
sys.exit(2)
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)