__init__.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import logging
  2. import os
  3. import sys
  4. from importlib import import_module
  5. config_module = os.environ.setdefault("CELERY_TEST_CONFIG_MODULE",
  6. "celery.tests.config")
  7. os.environ.setdefault("CELERY_CONFIG_MODULE", config_module)
  8. os.environ["CELERY_LOADER"] = "default"
  9. os.environ["EVENTLET_NOPATCH"] = "yes"
  10. os.environ["GEVENT_NOPATCH"] = "yes"
  11. try:
  12. WindowsError = WindowsError # noqa
  13. except NameError:
  14. class WindowsError(Exception):
  15. pass
  16. def teardown():
  17. # Don't want SUBDEBUG log messages at finalization.
  18. try:
  19. from multiprocessing.util import get_logger
  20. except ImportError:
  21. pass
  22. else:
  23. get_logger().setLevel(logging.WARNING)
  24. # Make sure test database is removed.
  25. import os
  26. if os.path.exists("test.db"):
  27. try:
  28. os.remove("test.db")
  29. except WindowsError:
  30. pass
  31. # Make sure there are no remaining threads at shutdown.
  32. import threading
  33. remaining_threads = [thread for thread in threading.enumerate()
  34. if thread.getName() != "MainThread"]
  35. if remaining_threads:
  36. sys.stderr.write(
  37. "\n\n**WARNING**: Remaining threads at teardown: %r...\n" % (
  38. remaining_threads))
  39. def find_distribution_modules(name=__name__, file=__file__):
  40. current_dist_depth = len(name.split(".")) - 1
  41. current_dist = os.path.join(os.path.dirname(file),
  42. *([os.pardir] * current_dist_depth))
  43. abs = os.path.abspath(current_dist)
  44. dist_name = os.path.basename(abs)
  45. for dirpath, dirnames, filenames in os.walk(abs):
  46. package = (dist_name + dirpath[len(abs):]).replace("/", ".")
  47. if "__init__.py" in filenames:
  48. yield package
  49. for filename in filenames:
  50. if filename.endswith(".py") and filename != "__init__.py":
  51. yield ".".join([package, filename])[:-3]
  52. def import_all_modules(name=__name__, file=__file__,
  53. skip=["celery.decorators", "celery.contrib.batches"]):
  54. for module in find_distribution_modules(name, file):
  55. if module not in skip:
  56. try:
  57. import_module(module)
  58. except ImportError:
  59. pass
  60. if os.environ.get("COVER_ALL_MODULES") or "--with-coverage3" in sys.argv:
  61. import_all_modules()