mirror of
https://github.com/python/cpython.git
synced 2025-07-30 22:54:16 +00:00
Make full module name available as __module_name__ even when __name__ is set to something else (like '__main__')
This commit is contained in:
parent
0f8b31a2da
commit
999a336ad7
3 changed files with 47 additions and 26 deletions
|
@ -23,6 +23,8 @@ class RunModuleCodeTest(unittest.TestCase):
|
|||
"run_argv0 = sys.argv[0]\n"
|
||||
"if __name__ in sys.modules:\n"
|
||||
" run_name = sys.modules[__name__].__name__\n"
|
||||
"if __module_name__ in sys.modules:\n"
|
||||
" mod_name = sys.modules[__module_name__].__module_name__\n"
|
||||
"# Check nested operation\n"
|
||||
"import runpy\n"
|
||||
"nested = runpy._run_module_code('x=1\\n', mod_name='<run>',\n"
|
||||
|
@ -32,14 +34,16 @@ class RunModuleCodeTest(unittest.TestCase):
|
|||
|
||||
def test_run_module_code(self):
|
||||
initial = object()
|
||||
name = "<Nonsense>"
|
||||
run_name = "<Nonsense>"
|
||||
mod_name = "<ModuleNonsense>"
|
||||
file = "Some other nonsense"
|
||||
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,
|
||||
run_name,
|
||||
mod_name,
|
||||
file,
|
||||
loader,
|
||||
True)
|
||||
|
@ -47,19 +51,23 @@ class RunModuleCodeTest(unittest.TestCase):
|
|||
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"] is name)
|
||||
self.failUnless(d2["__name__"] is run_name)
|
||||
self.failUnless(d2["run_name"] is run_name)
|
||||
self.failUnless(d2["__module_name__"] is mod_name)
|
||||
self.failUnless(d2["mod_name"] is mod_name)
|
||||
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)
|
||||
self.failUnless(mod_name not in sys.modules)
|
||||
self.failUnless(run_name not in sys.modules)
|
||||
|
||||
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["__name__"] is None)
|
||||
self.failUnless(d["__module_name__"] is None)
|
||||
self.failUnless(d["__file__"] is None)
|
||||
self.failUnless(d["__loader__"] is None)
|
||||
self.failUnless(d["run_argv0"] is saved_argv0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue