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') |