##// END OF EJS Templates
hgweb: use latest mtime for caching tag (issue4814)...
hgweb: use latest mtime for caching tag (issue4814) Previously, we were using the last mtime we saw when reporting the HTTP cache etag. When we added bookmarks to the end of the list of files checked, unchanged or missing bookmarks would keep the client cache from being invalidated.

File last commit:

r26068:05e7f57c default
r26150:ee31ede3 stable
Show More
hghave
99 lines | 2.7 KiB | text/plain | TextLexer
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 #!/usr/bin/env python
"""Test the running system for features availability. Exit with zero
Patrick Mezard
hghave: feature absence can be checked by prefixing with 'no-'
r5084 if all features are there, non-zero otherwise. If a feature name is
prefixed with "no-", the absence of feature is tested.
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 """
import optparse
FUJIWARA Katsunori
hghave: allow adding customized features at runtime...
r25732 import os, sys
Adrian Buehlmann
tests/hghave: extract hghave.py...
r16966 import hghave
Martin Geisler
test-gendoc: test documentation generation
r9446
Adrian Buehlmann
tests/hghave: extract hghave.py...
r16966 checks = hghave.checks
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881
def list_features():
Yuya Nishihara
tests: make hghave list features alphabetically
r22762 for name, feature in sorted(checks.iteritems()):
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 desc = feature[1]
print name + ':', desc
Nicolas Dumazet
hghave: checking that all targets are Exception-free
r8059 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
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 parser = optparse.OptionParser("%prog [options] [features]")
Nicolas Dumazet
hghave: checking that all targets are Exception-free
r8059 parser.add_option("--test-features", action="store_true",
help="test available features")
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 parser.add_option("--list-features", action="store_true",
help="list available features")
parser.add_option("-q", "--quiet", action="store_true",
help="check features silently")
FUJIWARA Katsunori
hghave: allow adding customized features at runtime...
r25732 def _loadaddon(quiet):
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
except BaseException, inst:
if not quiet:
sys.stderr.write('failed to import hghaveaddon.py from %r: %s\n'
% (path, inst))
sys.exit(2)
sys.path.pop(0)
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 if __name__ == '__main__':
options, args = parser.parse_args()
FUJIWARA Katsunori
hghave: allow adding customized features at runtime...
r25732 _loadaddon(options.quiet)
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 if options.list_features:
list_features()
sys.exit(0)
Thomas Arendsen Hein
Remove trailing spaces
r5081
Nicolas Dumazet
hghave: checking that all targets are Exception-free
r8059 if options.test_features:
sys.exit(test_features())
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 quiet = options.quiet
failures = 0
def error(msg):
global failures
if not quiet:
sys.stderr.write(msg + '\n')
failures += 1
Thomas Arendsen Hein
Remove trailing spaces
r5081
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 for feature in args:
Patrick Mezard
hghave: feature absence can be checked by prefixing with 'no-'
r5084 negate = feature.startswith('no-')
if negate:
feature = feature[3:]
Thomas Arendsen Hein
Hide absolute path from test-no-symlinks output....
r5091
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881 if feature not in checks:
Thomas Arendsen Hein
Use skipped: instead of hghave: for skipping tests, use this in test-merge-types
r5685 error('skipped: unknown feature: ' + feature)
Mads Kiilerich
tests: make hghave and run-tests exit on unknown feature requirements
r18229 sys.exit(2)
Thomas Arendsen Hein
Remove trailing spaces
r5081
check, desc = checks[feature]
Nicolas Dumazet
run-tests: detect when hghave fails to check for a feature and fail test...
r8060 try:
available = check()
except Exception, e:
error('hghave check failed: ' + feature)
continue
if not negate and not available:
Thomas Arendsen Hein
Use skipped: instead of hghave: for skipping tests, use this in test-merge-types
r5685 error('skipped: missing feature: ' + desc)
Nicolas Dumazet
run-tests: detect when hghave fails to check for a feature and fail test...
r8060 elif negate and available:
Thomas Arendsen Hein
Use skipped: instead of hghave: for skipping tests, use this in test-merge-types
r5685 error('skipped: system supports %s' % desc)
Patrick Mezard
Add hghave utility and run-tests.py support....
r4881
if failures != 0:
sys.exit(1)