]> granicus.if.org Git - python/commitdiff
Issue #28192: Don't import readline in isolated mode
authorSteve Dower <steve.dower@microsoft.com>
Sat, 17 Sep 2016 19:22:41 +0000 (12:22 -0700)
committerSteve Dower <steve.dower@microsoft.com>
Sat, 17 Sep 2016 19:22:41 +0000 (12:22 -0700)
Lib/site.py
Lib/test/test_site.py
Modules/main.c

index 525026675539fa0637f7cefd39c998719fb804dd..b6376357ea3689f6a3ff6f3d26ca4c7087333590 100644 (file)
@@ -60,7 +60,8 @@ omitted because it is not mentioned in either path configuration file.
 
 The readline module is also automatically configured to enable
 completion for systems that support it.  This can be overridden in
-sitecustomize, usercustomize or PYTHONSTARTUP.
+sitecustomize, usercustomize or PYTHONSTARTUP.  Starting Python in
+isolated mode (-I) disables automatic readline configuration.
 
 After these operations, an attempt is made to import a module
 named sitecustomize, which can perform arbitrary additional
@@ -491,7 +492,7 @@ def execsitecustomize():
             else:
                 raise
     except Exception as err:
-        if os.environ.get("PYTHONVERBOSE"):
+        if sys.flags.verbose:
             sys.excepthook(*sys.exc_info())
         else:
             sys.stderr.write(
@@ -511,7 +512,7 @@ def execusercustomize():
             else:
                 raise
     except Exception as err:
-        if os.environ.get("PYTHONVERBOSE"):
+        if sys.flags.verbose:
             sys.excepthook(*sys.exc_info())
         else:
             sys.stderr.write(
@@ -538,12 +539,13 @@ def main():
     setquit()
     setcopyright()
     sethelper()
-    enablerlcompleter()
+    if not sys.flags.isolated:
+        enablerlcompleter()
     execsitecustomize()
     if ENABLE_USER_SITE:
         execusercustomize()
 
-# Prevent edition of sys.path when python was started with -S and
+# Prevent extending of sys.path when python was started with -S and
 # site is imported later.
 if not sys.flags.no_site:
     main()
index 9afa56eb7350ba2484322fb7bdfe3df5696365f6..b048648226714615b49c000acb48f0c86e00405f 100644 (file)
@@ -140,8 +140,6 @@ class HelperFunctionsTests(unittest.TestCase):
         self.assertRegex(err_out.getvalue(), 'Traceback')
         self.assertRegex(err_out.getvalue(), 'ModuleNotFoundError')
 
-    @unittest.skipIf(sys.platform == "win32", "Windows does not raise an "
-                      "error for file paths containing null characters")
     def test_addpackage_import_bad_pth_file(self):
         # Issue 5258
         pth_dir, pth_fn = self.make_pth("abc\x00def\n")
@@ -447,10 +445,9 @@ class StartupImportTests(unittest.TestCase):
         popen = subprocess.Popen([sys.executable, '-I', '-v', '-c',
                                   'import sys; print(set(sys.modules))'],
                                  stdout=subprocess.PIPE,
-                                 stderr=subprocess.PIPE)
+                                 stderr=subprocess.PIPE,
+                                 encoding='utf-8')
         stdout, stderr = popen.communicate()
-        stdout = stdout.decode('utf-8')
-        stderr = stderr.decode('utf-8')
         modules = eval(stdout)
 
         self.assertIn('site', modules)
@@ -474,6 +471,5 @@ class StartupImportTests(unittest.TestCase):
         if sys.platform != 'darwin':
             self.assertFalse(modules.intersection(collection_mods), stderr)
 
-
 if __name__ == "__main__":
     unittest.main()
index 0b82f480a6a90a397ac53cda7d9bbd1a69a3e751..6986d94b42d2526510b607e8f27ff0802788d6b5 100644 (file)
@@ -703,7 +703,8 @@ Py_Main(int argc, wchar_t **argv)
     PySys_SetArgv(argc-_PyOS_optind, argv+_PyOS_optind);
 
     if ((Py_InspectFlag || (command == NULL && filename == NULL && module == NULL)) &&
-        isatty(fileno(stdin))) {
+        isatty(fileno(stdin)) &&
+        !Py_IsolatedFlag) {
         PyObject *v;
         v = PyImport_ImportModule("readline");
         if (v == NULL)