Skip to content

Commit b743eb0

Browse files
authored
Merge pull request #19 from DinoV/lazy_tests_dunder
2 parents d8f95f7 + aeda7ac commit b743eb0

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
@@ -2840,6 +2840,33 @@ def test_lazy_import_pkg_cross_import(self):
28402840
self.assertEqual(type(g["x"]), int)
28412841
self.assertEqual(type(g["b"]), types.LazyImportType)
28422842

2843+
def test_dunder_lazy_import(self):
2844+
try:
2845+
import test.test_import.data.lazy_imports.dunder_lazy_import
2846+
except ImportError as e:
2847+
self.fail('lazy import failed')
2848+
2849+
self.assertFalse("test.test_import.data.lazy_imports.basic2" in sys.modules)
2850+
2851+
def test_dunder_lazy_import_used(self):
2852+
try:
2853+
import test.test_import.data.lazy_imports.dunder_lazy_import_used
2854+
except ImportError as e:
2855+
self.fail('lazy import failed')
2856+
2857+
self.assertTrue("test.test_import.data.lazy_imports.basic2" in sys.modules)
2858+
2859+
def test_dunder_lazy_import_builtins(self):
2860+
"""__lazy_import__ uses modules __builtins__ to get __import__"""
2861+
try:
2862+
from test.test_import.data.lazy_imports import dunder_lazy_import_builtins
2863+
except ImportError as e:
2864+
self.fail('lazy import failed')
2865+
2866+
self.assertFalse("test.test_import.data.lazy_imports.basic2" in sys.modules)
2867+
self.assertEqual(dunder_lazy_import_builtins.basic, 42)
2868+
2869+
28432870
class TestSinglePhaseSnapshot(ModuleSnapshot):
28442871
"""A representation of a single-phase init module for testing.
28452872
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)