diff options
author | Damien George <damien.p.george@gmail.com> | 2019-07-31 22:34:43 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2019-07-31 22:37:44 +1000 |
commit | 48f43b77aa62b99147d52b794da26621bbd74ee8 (patch) | |
tree | 258f949e48202723e39d6db893e25b8e37e0a512 | |
parent | f60229e261e61b59d563023b2df7204c4e01c51c (diff) |
tests: Add tests for overriding builtins.__import__.
-rw-r--r-- | tests/basics/builtin_override.py | 18 | ||||
-rw-r--r-- | tests/import/import_override.py | 17 |
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/basics/builtin_override.py b/tests/basics/builtin_override.py index 9f91341ed..e3cf9165f 100644 --- a/tests/basics/builtin_override.py +++ b/tests/basics/builtin_override.py @@ -12,7 +12,25 @@ except AttributeError: print(abs(1)) # __build_class__ is handled in a special way +orig_build_class = __build_class__ builtins.__build_class__ = lambda x, y: ('class', y) class A: pass print(A) +builtins.__build_class__ = orig_build_class + +# __import__ is handled in a special way +def custom_import(name, globals, locals, fromlist, level): + print('import', name, fromlist, level) + class M: + a = 1 + b = 2 + return M +builtins.__import__ = custom_import +__import__('A', None, None, None, 0) +import a +import a.b +from a import a +from a.b import a, b +from .a import a +from ..a import a, b diff --git a/tests/import/import_override.py b/tests/import/import_override.py new file mode 100644 index 000000000..6fe99009e --- /dev/null +++ b/tests/import/import_override.py @@ -0,0 +1,17 @@ +# test overriding __import__ combined with importing from the filesystem + +def custom_import(name, globals, locals, fromlist, level): + print('import', name, fromlist, level) + class M: + var = 456 + return M + +orig_import = __import__ +try: + __import__("builtins").__import__ = custom_import +except AttributeError: + print("SKIP") + raise SystemExit + +# import1a will be done via normal import which will import1b via our custom import +orig_import('import1a') |