1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import builtins
- import ctypes
- import ctypes.util
- import os
- import types
- import unittest.mock
- import pytest
- BUILTIN_IMPORT = builtins.__import__
- def dyld_find_mock(name):
-
- 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'):
- with unittest.mock.patch('builtins.__import__', import_mock):
- dlinfo_module = __import__('dlinfo')
- assert dlinfo_module.DLInfo.__module__ == 'dlinfo._macosx'
- return dlinfo_module
- @pytest.mark.parametrize('lib_name', [
- 'c',
- 'dl',
- 'python_grasp',
- ])
- def test_dlinfo_path(dlinfo_module_mac, lib_name):
- lib_filename = ctypes.util.find_library(lib_name)
- if not lib_filename:
- pytest.xfail('lib{} not found'.format(lib_name))
- lib = ctypes.cdll.LoadLibrary(lib_filename)
- dlinfo = dlinfo_module_mac.DLInfo(lib)
- assert lib_filename == os.path.basename(dlinfo.path)
- assert os.path.join(os.sep, 'lib') == os.path.dirname(dlinfo.path)
|