test_imports.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from __future__ import absolute_import, unicode_literals
  2. from celery.five import bytes_if_py2
  3. from celery.utils.imports import (
  4. qualname,
  5. reload_from_cwd,
  6. module_file,
  7. find_module,
  8. NotAPackage,
  9. )
  10. from celery.tests.case import Case, Mock, patch
  11. class test_import_utils(Case):
  12. def test_find_module(self):
  13. self.assertTrue(find_module('celery'))
  14. imp = Mock()
  15. imp.return_value = None
  16. with self.assertRaises(NotAPackage):
  17. find_module('foo.bar.baz', imp=imp)
  18. self.assertTrue(find_module('celery.worker.request'))
  19. def test_qualname(self):
  20. Class = type(bytes_if_py2('Fox'), (object,), {
  21. '__module__': 'quick.brown',
  22. })
  23. self.assertEqual(qualname(Class), 'quick.brown.Fox')
  24. self.assertEqual(qualname(Class()), 'quick.brown.Fox')
  25. @patch('celery.utils.imports.reload')
  26. def test_reload_from_cwd(self, reload):
  27. reload_from_cwd('foo')
  28. reload.assert_called()
  29. def test_reload_from_cwd_custom_reloader(self):
  30. reload = Mock()
  31. reload_from_cwd('foo', reload)
  32. reload.assert_called()
  33. def test_module_file(self):
  34. m1 = Mock()
  35. m1.__file__ = '/opt/foo/xyz.pyc'
  36. self.assertEqual(module_file(m1), '/opt/foo/xyz.py')
  37. m2 = Mock()
  38. m2.__file__ = '/opt/foo/xyz.py'
  39. self.assertEqual(module_file(m1), '/opt/foo/xyz.py')