demandimport: ensure lazyloaderex sets loader attributes (
issue6725)
Adds test capturing missed expectation.
--- a/hgdemandimport/demandimportpy3.py Tue Aug 30 09:59:53 2022 -0400
+++ b/hgdemandimport/demandimportpy3.py Wed Nov 02 09:34:03 2022 -0400
@@ -41,6 +41,10 @@
"""Make the module load lazily."""
with tracing.log('demandimport %s', module):
if _deactivated or module.__name__ in ignores:
+ # Reset the loader on the module as super() does (issue6725)
+ module.__spec__.loader = self.loader
+ module.__loader__ = self.loader
+
self.loader.exec_module(module)
else:
super().exec_module(module)
--- a/tests/test-demandimport.py Tue Aug 30 09:59:53 2022 -0400
+++ b/tests/test-demandimport.py Wed Nov 02 09:34:03 2022 -0400
@@ -234,3 +234,11 @@
zipfileimp = __import__('ftplib', globals(), locals(), ['unknownattr'])
assert f(zipfileimp) == "<module 'ftplib' from '?'>", f(zipfileimp)
assert not util.safehasattr(zipfileimp, 'unknownattr')
+
+
+# test deactivation for issue6725
+del sys.modules['telnetlib']
+with demandimport.deactivated():
+ import telnetlib
+assert telnetlib.__loader__ == telnetlib.__spec__.loader
+assert telnetlib.__loader__.get_resource_reader