From d571260d41bfe309412570785665a9afd8d8eef2 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Sat, 24 Jul 2021 22:41:25 +0900 Subject: [PATCH] Use importlib instead of imp ... because the imp module is deprecated since Python 3.4 . Closes-Bug: #1937904 Change-Id: Ib8f06ee629753faec73cf3a2f41e7c743b6e0b04 --- os_win/tests/unit/utils/test_baseutils.py | 16 +++++++++++----- os_win/utils/baseutils.py | 8 ++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/os_win/tests/unit/utils/test_baseutils.py b/os_win/tests/unit/utils/test_baseutils.py index a281f95e..a2a74457 100644 --- a/os_win/tests/unit/utils/test_baseutils.py +++ b/os_win/tests/unit/utils/test_baseutils.py @@ -16,7 +16,7 @@ from unittest import mock import six -import imp +import importlib from os_win.tests.unit import test_base from os_win.utils import baseutils @@ -29,7 +29,7 @@ class BaseUtilsTestCase(test_base.OsWinBaseTestCase): super(BaseUtilsTestCase, self).setUp() self.utils = baseutils.BaseUtils() self.utils._conn = mock.MagicMock() - mock.patch.object(imp, 'load_source').start() + mock.patch.object(importlib, 'util').start() @mock.patch.object(baseutils, 'wmi', create=True) def test_get_wmi_obj(self, mock_wmi): @@ -84,7 +84,7 @@ class BaseUtilsVirtTestCase(test_base.OsWinBaseTestCase): self.utils = baseutils.BaseUtilsVirt() self.utils._conn_attr = mock.MagicMock() baseutils.BaseUtilsVirt._os_version = None - mock.patch.object(imp, 'load_source').start() + mock.patch.object(importlib, 'util').start() @mock.patch.object(baseutils.BaseUtilsVirt, '_get_wmi_conn') def test_conn(self, mock_get_wmi_conn): @@ -110,13 +110,19 @@ class BaseUtilsVirtTestCase(test_base.OsWinBaseTestCase): mock_os] fake_module_path = '/fake/path/to/module' mock_wmi.__path__ = [fake_module_path] - old_conn = imp.load_source.return_value.WMI.return_value + + spec = importlib.util.spec_from_file_location.return_value + module = importlib.util.module_from_spec.return_value + old_conn = module.WMI.return_value expected = old_conn.Msvm_VirtualSystemManagementService()[0] self.assertEqual(expected, self.utils._vs_man_svc) self.assertIsNone(self.utils._vs_man_svc_attr) - imp.load_source.assert_called_once_with( + importlib.util.spec_from_file_location.assert_called_once_with( 'old_wmi', '%s.py' % fake_module_path) + spec.loader.exec_module.assert_called_once_with(module) + importlib.util.module_from_spec.assert_called_once_with( + importlib.util.spec_from_file_location.return_value) @mock.patch.object(baseutils.BaseUtilsVirt, '_get_wmi_compat_conn') def test_get_wmi_obj_compatibility_6_3(self, mock_get_wmi_compat): diff --git a/os_win/utils/baseutils.py b/os_win/utils/baseutils.py index d9f2b146..a156c69e 100644 --- a/os_win/utils/baseutils.py +++ b/os_win/utils/baseutils.py @@ -18,7 +18,7 @@ Base WMI utility class. """ -import imp +import importlib import sys import threading import time @@ -108,7 +108,11 @@ class BaseUtilsVirt(BaseUtils): # .GetText_ have different results. if not BaseUtilsVirt._old_wmi: old_wmi_path = "%s.py" % wmi.__path__[0] - BaseUtilsVirt._old_wmi = imp.load_source('old_wmi', old_wmi_path) + spec = importlib.util.spec_from_file_location('old_wmi', + old_wmi_path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + BaseUtilsVirt._old_wmi = module return BaseUtilsVirt._old_wmi.WMI(moniker=moniker, **kwargs) def _get_wmi_obj(self, moniker, compatibility_mode=False, **kwargs):