Skip to content

Commit aeda7ac

Browse files
committed
Add tests for __lazy_import__
1 parent 59110fc commit aeda7ac

File tree

4 files changed

+43
-0
lines changed

4 files changed

+43
-0
lines changed

Lib/test/test_import/__init__.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2809,6 +2809,33 @@ def test_lazy_import_pkg_cross_import(self):
28092809
self.assertEqual(type(g["x"]), int)
28102810
self.assertEqual(type(g["b"]), types.LazyImportType)
28112811

2812+
def test_dunder_lazy_import(self):
2813+
try:
2814+
import test.test_import.data.lazy_imports.dunder_lazy_import
2815+
except ImportError as e:
2816+
self.fail('lazy import failed')
2817+
2818+
self.assertFalse("test.test_import.data.lazy_imports.basic2" in sys.modules)
2819+
2820+
def test_dunder_lazy_import_used(self):
2821+
try:
2822+
import test.test_import.data.lazy_imports.dunder_lazy_import_used
2823+
except ImportError as e:
2824+
self.fail('lazy import failed')
2825+
2826+
self.assertTrue("test.test_import.data.lazy_imports.basic2" in sys.modules)
2827+
2828+
def test_dunder_lazy_import_builtins(self):
2829+
"""__lazy_import__ uses modules __builtins__ to get __import__"""
2830+
try:
2831+
from test.test_import.data.lazy_imports import dunder_lazy_import_builtins
2832+
except ImportError as e:
2833+
self.fail('lazy import failed')
2834+
2835+
self.assertFalse("test.test_import.data.lazy_imports.basic2" in sys.modules)
2836+
self.assertEqual(dunder_lazy_import_builtins.basic, 42)
2837+
2838+
28122839
class TestSinglePhaseSnapshot(ModuleSnapshot):
28132840
"""A representation of a single-phase init module for testing.
28142841
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
basic = __lazy_import__('test.test_import.data.lazy_imports.basic2')
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import sys
2+
3+
def myimport(*args):
4+
return sys.modules[__name__]
5+
6+
7+
new_globals = dict(globals())
8+
new_globals["__builtins__"] = {
9+
"__import__": myimport,
10+
}
11+
basic2 = 42
12+
basic = __lazy_import__("test.test_import.data.lazy_imports", fromlist="basic2", globals=new_globals)
13+
basic
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
basic = __lazy_import__('test.test_import.data.lazy_imports', fromlist="basic2")
2+
basic

0 commit comments

Comments
 (0)