1- import builtins
21import ctypes
32import ctypes .util
43import importlib
109
1110import dlinfo
1211
13- BUILTIN_IMPORT = builtins .__import__
14-
15-
16- def dyld_find_mock (name ):
17- # https://github.com/python/cpython/blob/master/Lib/ctypes/macholib/dyld.py#L116
18- return os .path .join (os .sep , 'lib' , name )
19-
20-
21- def import_mock (name , * args ):
22- if name == 'ctypes.macholib.dyld' :
23- dyld_module = unittest .mock .MagicMock ()
24- dyld_module .dyld_find = dyld_find_mock
25- return dyld_module
26- return BUILTIN_IMPORT (name , * args )
27-
2812
2913# pylint: disable=redefined-outer-name
3014@pytest .fixture
3115def dlinfo_module_mac () -> types .ModuleType :
3216 with unittest .mock .patch ('sys.platform' , 'darwin' ):
33- with unittest .mock .patch ('builtins.__import__' , import_mock ):
34- dlinfo_module = importlib .reload (dlinfo )
17+ dlinfo_module = importlib .reload (dlinfo )
3518 assert dlinfo_module .DLInfo .__module__ == 'dlinfo._macosx'
3619 return dlinfo_module
3720
@@ -48,5 +31,8 @@ def test_dlinfo_path(dlinfo_module_mac, lib_name):
4831 pytest .xfail ('lib{} not found' .format (lib_name ))
4932 lib = ctypes .cdll .LoadLibrary (lib_filename )
5033 lib_info = dlinfo_module_mac .DLInfo (lib )
51- assert lib_filename == os .path .basename (lib_info .path )
52- assert os .path .join (os .sep , 'lib' ) == os .path .dirname (lib_info .path )
34+ if os .path .exists (lib_info .path ): # mac
35+ assert os .path .isabs (lib_info .path )
36+ assert lib_filename == os .path .basename (lib_info .path )
37+ else : # dyld_find mock
38+ assert lib_info .path == '/usr/lib/lib{}.dylib' .format (lib_name )
0 commit comments