[Python-checkins] bpo-31676: Fix test_imp.test_load_source() side effect (GH-3871) (GH-3988)

Mariatta webhook-mailer at python.org
Tue Oct 17 21:47:12 EDT 2017


https://github.com/python/cpython/commit/178148025494c4058571831fb11fc8eeff8b7365
commit: 178148025494c4058571831fb11fc8eeff8b7365
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Mariatta <Mariatta at users.noreply.github.com>
date: 2017-10-17T18:47:10-07:00
summary:

bpo-31676: Fix test_imp.test_load_source() side effect (GH-3871) (GH-3988)

test_load_source() now replaces the current __name__ module with a
temporary module to prevent side effects.
(cherry picked from commit a505ecdc5013cd8f930aacc1ec4fb2afa62d3853)

files:
M Lib/test/test_imp.py

diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py
index d513eedc7bb..1c7605c77bb 100644
--- a/Lib/test/test_imp.py
+++ b/Lib/test/test_imp.py
@@ -315,8 +315,13 @@ def test_multiple_calls_to_get_data(self):
         loader.get_data(imp.__file__)  # Will need to create a newly opened file
 
     def test_load_source(self):
-        with self.assertRaisesRegex(ValueError, 'embedded null'):
-            imp.load_source(__name__, __file__ + "\0")
+        # Create a temporary module since load_source(name) modifies
+        # sys.modules[name] attributes like __loader___
+        modname = f"tmp{__name__}"
+        mod = type(sys.modules[__name__])(modname)
+        with support.swap_item(sys.modules, modname, mod):
+            with self.assertRaisesRegex(ValueError, 'embedded null'):
+                imp.load_source(modname, __file__ + "\0")
 
     @support.cpython_only
     def test_issue31315(self):



More information about the Python-checkins mailing list