def test_override_builtin(self): import os def foo(): import os return os self.assertEqual(foo(), os) with swap_attr(builtins, '__import__', lambda *x: 5): self.assertEqual(foo(), 5) with swap_item(globals(), '__import__', lambda *x: 5): self.assertEqual(foo(), os)
def test_override_builtin(self): # Test that overriding builtins.__import__ can bypass sys.modules. import os def foo(): import os return os self.assertEqual(foo(), os) # Quick sanity check. with swap_attr(builtins, "__import__", lambda *x: 5): self.assertEqual(foo(), 5) # Test what happens when we shadow __import__ in globals(); this # currently does not impact the import process, but if this changes, # other code will need to change, so keep this test as a tripwire. with swap_item(globals(), "__import__", lambda *x: 5): self.assertEqual(foo(), os)