summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/importlib/_bootstrap.py3
-rw-r--r--Lib/importlib/test/import_/test_packages.py13
-rw-r--r--Lib/test/test_time.py11
3 files changed, 27 insertions, 0 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index e0f86fc..d81e949 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -927,6 +927,9 @@ def _find_and_load(name, import_):
if parent:
if parent not in sys.modules:
import_(parent)
+ # Crazy side-effects!
+ if name in sys.modules:
+ return sys.modules[name]
# Backwards-compatibility; be nicer to skip the dict lookup.
parent_module = sys.modules[parent]
try:
diff --git a/Lib/importlib/test/import_/test_packages.py b/Lib/importlib/test/import_/test_packages.py
index faadc32..9590d5f 100644
--- a/Lib/importlib/test/import_/test_packages.py
+++ b/Lib/importlib/test/import_/test_packages.py
@@ -27,6 +27,19 @@ class ParentModuleTests(unittest.TestCase):
with self.assertRaises(ImportError):
import_util.import_('sys.no_submodules_here')
+ def test_module_not_package_but_side_effects(self):
+ # If a module injects something into sys.modules as a side-effect, then
+ # pick up on that fact.
+ name = 'mod'
+ subname = name + '.b'
+ def module_injection():
+ sys.modules[subname] = 'total bunk'
+ mock_modules = util.mock_modules('mod',
+ module_code={'mod': module_injection})
+ with mock_modules as mock:
+ with util.import_state(meta_path=[mock]):
+ submodule = import_util.import_(subname)
+
def test_main():
from test.support import run_unittest
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index 28d018a..fb2489c 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -47,6 +47,17 @@ class TimeTestCase(unittest.TestCase):
self.assertGreater(res, 0.0)
self.assertLessEqual(res, 1.0)
+ @unittest.skipUnless(hasattr(time, 'clock_settime'),
+ 'need time.clock_settime()')
+ def test_clock_settime(self):
+ t = time.clock_gettime(time.CLOCK_REALTIME)
+ try:
+ time.clock_settime(time.CLOCK_REALTIME, t)
+ except PermissionError:
+ pass
+
+ self.assertRaises(OSError, time.clock_settime, time.CLOCK_MONOTONIC, 0)
+
def test_conversions(self):
self.assertEqual(time.ctime(self.t),
time.asctime(time.localtime(self.t)))