💚 pass unit tests. #6

This commit is contained in:
chfw 2018-11-05 22:32:14 +00:00
parent 5f02119bfe
commit 749359aa9b
2 changed files with 25 additions and 18 deletions

View File

@ -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):

View File

@ -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():