💚 pass unit tests. #6
This commit is contained in:
parent
5f02119bfe
commit
749359aa9b
35
lml/utils.py
35
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):
|
||||
|
|
|
@ -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():
|
||||
|
|
Loading…
Reference in New Issue