177 except ImportError as inst: |
177 except ImportError as inst: |
178 assert rsub(r"'", '', str(inst)).startswith( |
178 assert rsub(r"'", '', str(inst)).startswith( |
179 'cannot import name unknownattr' |
179 'cannot import name unknownattr' |
180 ) |
180 ) |
181 |
181 |
182 from mercurial import util |
|
183 |
|
184 # Unlike the import statement, __import__() function should not raise |
182 # Unlike the import statement, __import__() function should not raise |
185 # ImportError even if fromlist has an unknown item |
183 # ImportError even if fromlist has an unknown item |
186 # (see Python/import.c:import_module_level() and ensure_fromlist()) |
184 # (see Python/import.c:import_module_level() and ensure_fromlist()) |
187 assert 'ftplib' not in sys.modules |
185 assert 'ftplib' not in sys.modules |
188 zipfileimp = __import__('ftplib', globals(), locals(), ['unknownattr']) |
186 zipfileimp = __import__('ftplib', globals(), locals(), ['unknownattr']) |
189 assert f(zipfileimp) == "<module 'ftplib' from '?'>", f(zipfileimp) |
187 assert f(zipfileimp) == "<module 'ftplib' from '?'>", f(zipfileimp) |
190 assert not util.safehasattr(zipfileimp, 'unknownattr') |
188 assert not hasattr(zipfileimp, 'unknownattr') |
191 |
189 |
192 |
190 |
193 # test deactivation for issue6725 |
191 # test deactivation for issue6725 |
194 del sys.modules['telnetlib'] |
192 del sys.modules['telnetlib'] |
195 with demandimport.deactivated(): |
193 with demandimport.deactivated(): |