Преглед изворни кода

refactor mac test to attempt to fix ImportError in gitlab-ci

Fabian Peter Hammerle пре 5 година
родитељ
комит
7cfc7d3f59
1 измењених фајлова са 14 додато и 8 уклоњено
  1. 14 8
      tests/dlinfo_macosx_mock_test.py

+ 14 - 8
tests/dlinfo_macosx_mock_test.py

@@ -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', [