test_module.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import sys
  2. import joblib
  3. import pytest
  4. from joblib.testing import check_subprocess_call
  5. def test_version():
  6. assert hasattr(joblib, '__version__'), (
  7. "There are no __version__ argument on the joblib module")
  8. def test_no_start_method_side_effect_on_import():
  9. # check that importing joblib does not implicitly set the global
  10. # start_method for multiprocessing.
  11. code = """if True:
  12. import joblib
  13. import multiprocessing as mp
  14. # The following line would raise RuntimeError if the
  15. # start_method is already set.
  16. mp.set_start_method("loky")
  17. """
  18. check_subprocess_call([sys.executable, '-c', code])
  19. def test_no_semaphore_tracker_on_import():
  20. # check that importing joblib does not implicitly spawn a resource tracker
  21. # or a semaphore tracker
  22. code = """if True:
  23. import joblib
  24. from multiprocessing import semaphore_tracker
  25. # The following line would raise RuntimeError if the
  26. # start_method is already set.
  27. msg = "multiprocessing.semaphore_tracker has been spawned on import"
  28. assert semaphore_tracker._semaphore_tracker._fd is None, msg"""
  29. if sys.version_info >= (3, 8):
  30. # semaphore_tracker was renamed in Python 3.8:
  31. code = code.replace("semaphore_tracker", "resource_tracker")
  32. check_subprocess_call([sys.executable, '-c', code])
  33. def test_no_resource_tracker_on_import():
  34. code = """if True:
  35. import joblib
  36. from joblib.externals.loky.backend import resource_tracker
  37. # The following line would raise RuntimeError if the
  38. # start_method is already set.
  39. msg = "loky.resource_tracker has been spawned on import"
  40. assert resource_tracker._resource_tracker._fd is None, msg
  41. """
  42. check_subprocess_call([sys.executable, '-c', code])