diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2007-07-24 13:58:28 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2007-07-24 13:58:28 (GMT) |
commit | 13c25c08ca9e154e337cc7d7c258d9286304ed16 (patch) | |
tree | 4896411a1b4c6f16595dda57d4a1e13a8687fec1 /Lib/test | |
parent | 4f82a03714ad08825bb5554988d9e2dd1fc30dd5 (diff) | |
download | cpython-13c25c08ca9e154e337cc7d7c258d9286304ed16.zip cpython-13c25c08ca9e154e337cc7d7c258d9286304ed16.tar.gz cpython-13c25c08ca9e154e337cc7d7c258d9286304ed16.tar.bz2 |
Fix an incompatibility between the -i and -m command line switches as reported on python-dev by PJE - runpy.run_module now leaves any changes it makes to the sys module intact after the function terminates
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_runpy.py | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/Lib/test/test_runpy.py b/Lib/test/test_runpy.py index 31f4f85..3a5a709 100644 --- a/Lib/test/test_runpy.py +++ b/Lib/test/test_runpy.py @@ -26,8 +26,7 @@ class RunModuleCodeTest(unittest.TestCase): " module_in_sys_modules = globals() is sys.modules[__name__].__dict__\n" "# Check nested operation\n" "import runpy\n" - "nested = runpy._run_module_code('x=1\\n', mod_name='<run>',\n" - " alter_sys=True)\n" + "nested = runpy._run_module_code('x=1\\n', mod_name='<run>')\n" ) @@ -38,35 +37,44 @@ class RunModuleCodeTest(unittest.TestCase): loader = "Now you're just being silly" d1 = dict(initial=initial) saved_argv0 = sys.argv[0] - d2 = _run_module_code(self.test_source, - d1, - name, - file, - loader, - True) - self.failUnless("result" not in d1) - self.failUnless(d2["initial"] is initial) - self.failUnless(d2["result"] == self.expected_result) - self.failUnless(d2["nested"]["x"] == 1) - self.failUnless(d2["__name__"] is name) - self.failUnless(d2["run_name_in_sys_modules"]) - self.failUnless(d2["module_in_sys_modules"]) - self.failUnless(d2["__file__"] is file) - self.failUnless(d2["run_argv0"] is file) - self.failUnless(d2["__loader__"] is loader) - self.failUnless(sys.argv[0] is saved_argv0) - self.failUnless(name not in sys.modules) + try: + d2 = _run_module_code(self.test_source, + d1, + name, + file, + loader, + alter_sys=True) + self.failUnless("result" not in d1) + self.failUnless(d2["initial"] is initial) + self.failUnless(d2["result"] == self.expected_result) + self.failUnless(d2["nested"]["x"] == 1) + self.failUnless(d2["nested"]["__name__"] == "<run>") + self.failUnless(d2["__name__"] is name) + self.failUnless(d2["__file__"] is file) + self.failUnless(d2["__loader__"] is loader) + self.failUnless(d2["run_argv0"] is file) + self.failUnless(d2["run_name_in_sys_modules"]) + self.failUnless(d2["module_in_sys_modules"]) + self.failUnless(sys.argv[0] is not saved_argv0) + self.failUnless(name in sys.modules) + finally: + sys.argv[0] = saved_argv0 + if name in sys.modules: + del sys.modules[name] def test_run_module_code_defaults(self): saved_argv0 = sys.argv[0] d = _run_module_code(self.test_source) self.failUnless(d["result"] == self.expected_result) + self.failUnless(d["nested"]["x"] == 1) + self.failUnless(d["nested"]["__name__"] == "<run>") self.failUnless(d["__name__"] is None) self.failUnless(d["__file__"] is None) self.failUnless(d["__loader__"] is None) self.failUnless(d["run_argv0"] is saved_argv0) - self.failUnless("run_name" not in d) + self.failUnless(not d["run_name_in_sys_modules"]) self.failUnless(sys.argv[0] is saved_argv0) + self.failUnless(None not in sys.modules) class RunModuleTest(unittest.TestCase): |