bpo-36405: IDLE - Restore __main__ and add tests (GH-12518)


Fix error in commit 2b75155 noticed by Serhiy Storchaka.
(cherry picked from commit 0fe4513d9a5510ae91c0da7eb0433f79a6d4dda9)

Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
diff --git a/Lib/idlelib/calltip.py b/Lib/idlelib/calltip.py
index 4b78917..b013a7f 100644
--- a/Lib/idlelib/calltip.py
+++ b/Lib/idlelib/calltip.py
@@ -4,6 +4,7 @@
 parameter and docstring information when you type an opening parenthesis, and
 which disappear when you type a closing parenthesis.
 """
+import __main__
 import inspect
 import re
 import sys
@@ -99,10 +100,10 @@
 
 def get_entity(expression):
     """Return the object corresponding to expression evaluated
-    in a namespace spanning sys.modules and globals().
+    in a namespace spanning sys.modules and __main.dict__.
     """
     if expression:
-        namespace = {**sys.modules, **globals()}
+        namespace = {**sys.modules, **__main__.__dict__}
         try:
             return eval(expression, namespace)  # Only protect user code.
         except BaseException: