|
@@ -1,3 +1,4 @@
|
|
|
+import builtins
|
|
|
import ctypes
|
|
|
import ctypes.util
|
|
|
import os
|
|
@@ -6,24 +7,29 @@ import unittest.mock
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
+BUILTIN_IMPORT = builtins.__import__
|
|
|
+
|
|
|
|
|
|
def dyld_find_mock(name):
|
|
|
# https://github.com/python/cpython/blob/master/Lib/ctypes/macholib/dyld.py#L116
|
|
|
return os.path.join(os.sep, 'lib', name)
|
|
|
|
|
|
|
|
|
+def import_mock(name, *args):
|
|
|
+ if name == 'ctypes.macholib.dyld':
|
|
|
+ dyld_module = unittest.mock.MagicMock()
|
|
|
+ dyld_module.dyld_find = dyld_find_mock
|
|
|
+ return dyld_module
|
|
|
+ return BUILTIN_IMPORT(name, *args)
|
|
|
+
|
|
|
+
|
|
|
@pytest.fixture
|
|
|
def dlinfo_module_mac() -> types.ModuleType:
|
|
|
with unittest.mock.patch('sys.platform', 'darwin'):
|
|
|
- dyld_module = unittest.mock.MagicMock()
|
|
|
- dyld_module.dyld_find = dyld_find_mock
|
|
|
- with unittest.mock.patch.dict('sys.modules',
|
|
|
- {'ctypes': unittest.mock.MagicMock(),
|
|
|
- 'ctypes.macholib': unittest.mock.MagicMock(),
|
|
|
- 'ctypes.macholib.dyld': dyld_module}):
|
|
|
+ with unittest.mock.patch('builtins.__import__', import_mock):
|
|
|
dlinfo_module = __import__('dlinfo')
|
|
|
- assert dlinfo_module.DLInfo.__module__ == 'dlinfo._macosx'
|
|
|
- return dlinfo_module
|
|
|
+ assert dlinfo_module.DLInfo.__module__ == 'dlinfo._macosx'
|
|
|
+ return dlinfo_module
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('lib_name', [
|