summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2016-07-14 22:53:16 +0300
committerAlex Grönholm <alex.gronholm@nextday.fi>2016-07-14 22:53:16 +0300
commitbea7167c7a57d364c861bc41c31a14fdbb1a7610 (patch)
tree989b7146ad09c6462fcc4a555b339971ef0bd17e
parent5b8b4eddf64177481f06bef32cddf86f29a4df53 (diff)
downloadapscheduler-bea7167c7a57d364c861bc41c31a14fdbb1a7610.tar.gz
Added tests for the import fix in ref_to_obj()
-rw-r--r--apscheduler/util.py2
-rw-r--r--tests/test_util.py10
2 files changed, 11 insertions, 1 deletions
diff --git a/apscheduler/util.py b/apscheduler/util.py
index 72ff46b..d6d5c47 100644
--- a/apscheduler/util.py
+++ b/apscheduler/util.py
@@ -259,7 +259,7 @@ def ref_to_obj(ref):
modulename, rest = ref.split(':', 1)
try:
- obj = __import__(modulename, globals(), locals(), [rest])
+ obj = __import__(modulename, fromlist=[rest])
except ImportError:
raise LookupError('Error resolving reference %s: could not import module' % ref)
diff --git a/tests/test_util.py b/tests/test_util.py
index 6bbe7ee..44ebd4e 100644
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -1,6 +1,7 @@
# coding: utf-8
from datetime import date, datetime, timedelta, tzinfo
from functools import partial
+from types import ModuleType
import pytest
import pytz
@@ -220,6 +221,15 @@ class TestRefToObj(object):
from logging.handlers import RotatingFileHandler
assert ref_to_obj('logging.handlers:RotatingFileHandler') is RotatingFileHandler
+ def test_complex_path(self):
+ pkg1 = ModuleType('pkg1')
+ pkg1.pkg2 = 'blah'
+ pkg2 = ModuleType('pkg1.pkg2')
+ pkg2.varname = 'test'
+ sys.modules['pkg1'] = pkg1
+ sys.modules['pkg1.pkg2'] = pkg2
+ assert ref_to_obj('pkg1.pkg2:varname') == 'test'
+
@pytest.mark.parametrize('input,error', [
(object(), TypeError),
('module', ValueError),