PageRenderTime 48ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/hghave

https://bitbucket.org/mirror/mercurial/
Python | 77 lines | 74 code | 0 blank | 3 comment | 0 complexity | e7ea56f4545f761b923bc38eaf2007dc MD5 | raw file
Possible License(s): GPL-2.0
  1. #!/usr/bin/env python
  2. """Test the running system for features availability. Exit with zero
  3. if all features are there, non-zero otherwise. If a feature name is
  4. prefixed with "no-", the absence of feature is tested.
  5. """
  6. import optparse
  7. import sys
  8. import hghave
  9. checks = hghave.checks
  10. def list_features():
  11. for name, feature in checks.iteritems():
  12. desc = feature[1]
  13. print name + ':', desc
  14. def test_features():
  15. failed = 0
  16. for name, feature in checks.iteritems():
  17. check, _ = feature
  18. try:
  19. check()
  20. except Exception, e:
  21. print "feature %s failed: %s" % (name, e)
  22. failed += 1
  23. return failed
  24. parser = optparse.OptionParser("%prog [options] [features]")
  25. parser.add_option("--test-features", action="store_true",
  26. help="test available features")
  27. parser.add_option("--list-features", action="store_true",
  28. help="list available features")
  29. parser.add_option("-q", "--quiet", action="store_true",
  30. help="check features silently")
  31. if __name__ == '__main__':
  32. options, args = parser.parse_args()
  33. if options.list_features:
  34. list_features()
  35. sys.exit(0)
  36. if options.test_features:
  37. sys.exit(test_features())
  38. quiet = options.quiet
  39. failures = 0
  40. def error(msg):
  41. global failures
  42. if not quiet:
  43. sys.stderr.write(msg + '\n')
  44. failures += 1
  45. for feature in args:
  46. negate = feature.startswith('no-')
  47. if negate:
  48. feature = feature[3:]
  49. if feature not in checks:
  50. error('skipped: unknown feature: ' + feature)
  51. sys.exit(2)
  52. check, desc = checks[feature]
  53. try:
  54. available = check()
  55. except Exception, e:
  56. error('hghave check failed: ' + feature)
  57. continue
  58. if not negate and not available:
  59. error('skipped: missing feature: ' + desc)
  60. elif negate and available:
  61. error('skipped: system supports %s' % desc)
  62. if failures != 0:
  63. sys.exit(1)