conftest.py 910 B

1234567891011121314151617181920212223242526
  1. import builtins
  2. import os
  3. import re
  4. import unittest.mock
  5. def dyld_find_mock(lib_filename):
  6. # https://github.com/python/cpython/blob/master/Lib/ctypes/macholib/dyld.py#L116
  7. lib_name = re.match(r'^(lib\w+)\.\w+(\.\d+)?$', lib_filename).group(1)
  8. return os.path.join(os.sep, 'usr', 'lib', lib_name + '.dylib')
  9. _BUILTIN_IMPORT = builtins.__import__
  10. def import_mock(name, *args, **kwargs):
  11. try:
  12. return _BUILTIN_IMPORT(name, *args, **kwargs)
  13. except ModuleNotFoundError as exc:
  14. if name == 'ctypes.macholib.dyld': # only available on mac
  15. dyld_module = unittest.mock.MagicMock()
  16. dyld_module.dyld_find = dyld_find_mock
  17. return dyld_module
  18. raise exc
  19. # required for tests/dlinfo_macosx_mock_test.py and doctests in dlinfo/_macosx.py.
  20. # @pytest.fixture(autouse=True) does not run before import statements.
  21. builtins.__import__ = import_mock