Make full module name available as __module_name__ even when __name__ is set to something else (like '__main__')
diff --git a/Lib/test/test_runpy.py b/Lib/test/test_runpy.py
index 88e9900..acbd3fc 100644
--- a/Lib/test/test_runpy.py
+++ b/Lib/test/test_runpy.py
@@ -23,6 +23,8 @@
         "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 @@
 
     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 @@
         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)