From 749359aa9b24062228568408e095dd0ce9b52b42 Mon Sep 17 00:00:00 2001 From: chfw Date: Mon, 5 Nov 2018 22:32:14 +0000 Subject: [PATCH] :green_heart: pass unit tests. #6 --- lml/utils.py | 35 ++++++++++++++++++++--------------- tests/test_utils.py | 8 +++++--- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/lml/utils.py b/lml/utils.py index 2ac0bf1..d2331b8 100644 --- a/lml/utils.py +++ b/lml/utils.py @@ -11,11 +11,6 @@ import sys import logging from json import dumps, JSONEncoder -try: - ModuleNotFoundError -except NameError: - ModuleNotFoundError = ImportError - PY2 = sys.version_info[0] == 2 log = logging.getLogger(__name__) @@ -44,16 +39,26 @@ def json_dumps(keywords): def do_import(plugin_module_name): """dynamically import a module""" - try: - plugin_module = __import__(plugin_module_name) - if "." in plugin_module_name: - modules = plugin_module_name.split(".") - for module in modules[1:]: - plugin_module = getattr(plugin_module, module) - log.debug("found " + plugin_module_name) - return plugin_module - except ModuleNotFoundError: - log.exception("failed to import %s", plugin_module_name) + if PY2: + try: + return _do_import(plugin_module_name) + except ImportError: + log.exception("failed to import %s", plugin_module_name) + else: + try: + return _do_import(plugin_module_name) + except (ImportError, ModuleNotFoundError): + log.exception("failed to import %s", plugin_module_name) + + +def _do_import(plugin_module_name): + plugin_module = __import__(plugin_module_name) + if "." in plugin_module_name: + modules = plugin_module_name.split(".") + for module in modules[1:]: + plugin_module = getattr(plugin_module, module) + log.debug("found " + plugin_module_name) + return plugin_module def do_import_class(plugin_class): diff --git a/tests/test_utils.py b/tests/test_utils.py index 4e25539..b54a295 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,5 +1,6 @@ +from mock import patch from lml.plugin import PluginManager -from nose.tools import eq_, raises +from nose.tools import eq_ from lml.utils import json_dumps from lml.utils import do_import @@ -27,9 +28,10 @@ def test_do_import_2(): eq_(plugin, themodule) -@raises(ImportError) -def test_do_import_error(): +@patch("lml.utils.log.exception") +def test_do_import_error(mock_exception): do_import("non.exist") + mock_exception.assert_called_with('failed to import %s', 'non.exist') def test_do_import_cls():