[util] add 'std' object to global eval namespace (#6330)

allows accessing standard library modules (and other external modules)
in a more straightforward manner than '__import__(...)'

* std.os.getcwd()
* std["os"].getcwd()
This commit is contained in:
Mike Fährmann
2024-10-17 21:01:34 +02:00
parent 9b4c94fda8
commit 4667833195
2 changed files with 48 additions and 0 deletions

View File

@@ -830,6 +830,34 @@ def hash(value):
i += 1
self.assertEqual(i, 0)
def test_module_proxy(self):
proxy = util.ModuleProxy()
self.assertIs(proxy.os, os)
self.assertIs(proxy.os.path, os.path)
self.assertIs(proxy["os"], os)
self.assertIs(proxy["os.path"], os.path)
self.assertIs(proxy["os"].path, os.path)
self.assertIs(proxy.abcdefghi, util.NONE)
self.assertIs(proxy["abcdefghi"], util.NONE)
self.assertIs(proxy["abc.def.ghi"], util.NONE)
self.assertIs(proxy["os.path2"], util.NONE)
def test_null_context(self):
with util.NullContext():
pass
with util.NullContext() as ctx:
self.assertIs(ctx, None)
try:
with util.NullContext() as ctx:
exc_orig = ValueError()
raise exc_orig
except ValueError as exc:
self.assertIs(exc, exc_orig)
class TestExtractor():
category = "test_category"