__init__.py 2.4 KB

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