tests/test-demandimport.py
changeset 41507 30248d6bc057
parent 41506 3e89736b98ce
child 43076 2372284d9457
equal deleted inserted replaced
41506:3e89736b98ce 41507:30248d6bc057
   192     assert f(re.stderr) == "<open file '<whatever>', mode 'w' at 0x?>", f(
   192     assert f(re.stderr) == "<open file '<whatever>', mode 'w' at 0x?>", f(
   193         re.stderr
   193         re.stderr
   194     )
   194     )
   195     assert f(re) == "<proxied module 'sys'>", f(re)
   195     assert f(re) == "<proxied module 'sys'>", f(re)
   196 
   196 
   197 import contextlib
   197 assert 'telnetlib' not in sys.modules
   198 
   198 import telnetlib
   199 if ispy3:
   199 
   200     assert not isinstance(contextlib, _LazyModule)
   200 if ispy3:
   201     assert f(contextlib) == "<module 'contextlib' from '?'>"
   201     assert not isinstance(telnetlib, _LazyModule)
   202 else:
   202     assert f(telnetlib) == "<module 'telnetlib' from '?'>"
   203     assert f(contextlib) == "<unloaded module 'contextlib'>", f(contextlib)
   203 else:
       
   204     assert f(telnetlib) == "<unloaded module 'telnetlib'>", f(telnetlib)
   204 
   205 
   205 try:
   206 try:
   206     from contextlib import unknownattr
   207     from telnetlib import unknownattr
   207 
   208 
   208     assert False, (
   209     assert False, (
   209         'no demandmod should be created for attribute of non-package '
   210         'no demandmod should be created for attribute of non-package '
   210         'module:\ncontextlib.unknownattr = %s' % f(unknownattr)
   211         'module:\ntelnetlib.unknownattr = %s' % f(unknownattr)
   211     )
   212     )
   212 except ImportError as inst:
   213 except ImportError as inst:
   213     assert rsub(r"'", '', str(inst)).startswith(
   214     assert rsub(r"'", '', str(inst)).startswith(
   214         'cannot import name unknownattr'
   215         'cannot import name unknownattr'
   215     )
   216     )
   217 from mercurial import util
   218 from mercurial import util
   218 
   219 
   219 # Unlike the import statement, __import__() function should not raise
   220 # Unlike the import statement, __import__() function should not raise
   220 # ImportError even if fromlist has an unknown item
   221 # ImportError even if fromlist has an unknown item
   221 # (see Python/import.c:import_module_level() and ensure_fromlist())
   222 # (see Python/import.c:import_module_level() and ensure_fromlist())
   222 contextlibimp = __import__('contextlib', globals(), locals(), ['unknownattr'])
   223 assert 'zipfile' not in sys.modules
   223 assert f(contextlibimp) == "<module 'contextlib' from '?'>", f(contextlibimp)
   224 zipfileimp = __import__('zipfile', globals(), locals(), ['unknownattr'])
   224 assert not util.safehasattr(contextlibimp, 'unknownattr')
   225 assert f(zipfileimp) == "<module 'zipfile' from '?'>", f(zipfileimp)
       
   226 assert not util.safehasattr(zipfileimp, 'unknownattr')