diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2016-07-14 22:53:16 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2016-07-14 22:53:16 +0300 |
commit | bea7167c7a57d364c861bc41c31a14fdbb1a7610 (patch) | |
tree | 989b7146ad09c6462fcc4a555b339971ef0bd17e | |
parent | 5b8b4eddf64177481f06bef32cddf86f29a4df53 (diff) | |
download | apscheduler-bea7167c7a57d364c861bc41c31a14fdbb1a7610.tar.gz |
Added tests for the import fix in ref_to_obj()
-rw-r--r-- | apscheduler/util.py | 2 | ||||
-rw-r--r-- | tests/test_util.py | 10 |
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), |