run-tests.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #! /usr/bin/env python
  2. import sys, os, getopt, struct, unittest
  3. from distutils.spawn import spawn
  4. build = True
  5. verbosity = 2
  6. build_base = None
  7. here = os.path.dirname(os.path.abspath(__file__))
  8. os.chdir(here)
  9. def bits():
  10. """determine if running on a 32 bit or 64 bit platform
  11. """
  12. return struct.calcsize("P") * 8
  13. # -- parse options
  14. try:
  15. opts, args = getopt.getopt(sys.argv[1:], "nqb:")
  16. if args:
  17. raise getopt.GetoptError("too many arguments")
  18. except getopt.GetoptError:
  19. sys.exit("run-tests.py: error: %s" % sys.exc_info()[1])
  20. for o, a in opts:
  21. if o == "-q":
  22. verbosity = 0
  23. elif o == "-n":
  24. build = False
  25. elif o == "-b":
  26. build_base = a
  27. # -- build greenlet
  28. if build:
  29. if verbosity == 0:
  30. cmd = [sys.executable, "setup.py", "-q", "build_ext", "-q", "-i"]
  31. else:
  32. cmd = [sys.executable, "setup.py", "build_ext", "-i"]
  33. spawn(cmd, search_path=0)
  34. # -- find greenlet but skip the one in "."
  35. if not build:
  36. oldpath = sys.path[:]
  37. sys.path.remove(here)
  38. import greenlet
  39. if not build:
  40. sys.path[:] = oldpath
  41. sys.stdout.write("python %s (%s bit) using greenlet %s from %s\n" %
  42. (sys.version.split()[0], bits(), greenlet.__version__, greenlet.__file__))
  43. sys.stdout.flush()
  44. # -- run tests
  45. from tests import test_collector
  46. result = unittest.TextTestRunner(verbosity=verbosity).run(test_collector(build_base))
  47. if result.failures or result.errors:
  48. sys.exit(1)