Commit 313523ce authored by Steve Dower's avatar Steve Dower

Issue #28192: Don't import readline in isolated mode

parent d2154ab0
...@@ -60,7 +60,8 @@ omitted because it is not mentioned in either path configuration 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 The readline module is also automatically configured to enable
completion for systems that support it. This can be overridden in 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 After these operations, an attempt is made to import a module
named sitecustomize, which can perform arbitrary additional named sitecustomize, which can perform arbitrary additional
...@@ -491,7 +492,7 @@ def execsitecustomize(): ...@@ -491,7 +492,7 @@ def execsitecustomize():
else: else:
raise raise
except Exception as err: except Exception as err:
if os.environ.get("PYTHONVERBOSE"): if sys.flags.verbose:
sys.excepthook(*sys.exc_info()) sys.excepthook(*sys.exc_info())
else: else:
sys.stderr.write( sys.stderr.write(
...@@ -511,7 +512,7 @@ def execusercustomize(): ...@@ -511,7 +512,7 @@ def execusercustomize():
else: else:
raise raise
except Exception as err: except Exception as err:
if os.environ.get("PYTHONVERBOSE"): if sys.flags.verbose:
sys.excepthook(*sys.exc_info()) sys.excepthook(*sys.exc_info())
else: else:
sys.stderr.write( sys.stderr.write(
...@@ -538,12 +539,13 @@ def main(): ...@@ -538,12 +539,13 @@ def main():
setquit() setquit()
setcopyright() setcopyright()
sethelper() sethelper()
enablerlcompleter() if not sys.flags.isolated:
enablerlcompleter()
execsitecustomize() execsitecustomize()
if ENABLE_USER_SITE: if ENABLE_USER_SITE:
execusercustomize() 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. # site is imported later.
if not sys.flags.no_site: if not sys.flags.no_site:
main() main()
......
...@@ -140,8 +140,6 @@ class HelperFunctionsTests(unittest.TestCase): ...@@ -140,8 +140,6 @@ class HelperFunctionsTests(unittest.TestCase):
self.assertRegex(err_out.getvalue(), 'Traceback') self.assertRegex(err_out.getvalue(), 'Traceback')
self.assertRegex(err_out.getvalue(), 'ModuleNotFoundError') 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): def test_addpackage_import_bad_pth_file(self):
# Issue 5258 # Issue 5258
pth_dir, pth_fn = self.make_pth("abc\x00def\n") pth_dir, pth_fn = self.make_pth("abc\x00def\n")
...@@ -447,10 +445,9 @@ class StartupImportTests(unittest.TestCase): ...@@ -447,10 +445,9 @@ class StartupImportTests(unittest.TestCase):
popen = subprocess.Popen([sys.executable, '-I', '-v', '-c', popen = subprocess.Popen([sys.executable, '-I', '-v', '-c',
'import sys; print(set(sys.modules))'], 'import sys; print(set(sys.modules))'],
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE) stderr=subprocess.PIPE,
encoding='utf-8')
stdout, stderr = popen.communicate() stdout, stderr = popen.communicate()
stdout = stdout.decode('utf-8')
stderr = stderr.decode('utf-8')
modules = eval(stdout) modules = eval(stdout)
self.assertIn('site', modules) self.assertIn('site', modules)
...@@ -474,6 +471,5 @@ class StartupImportTests(unittest.TestCase): ...@@ -474,6 +471,5 @@ class StartupImportTests(unittest.TestCase):
if sys.platform != 'darwin': if sys.platform != 'darwin':
self.assertFalse(modules.intersection(collection_mods), stderr) self.assertFalse(modules.intersection(collection_mods), stderr)
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()
...@@ -703,7 +703,8 @@ Py_Main(int argc, wchar_t **argv) ...@@ -703,7 +703,8 @@ Py_Main(int argc, wchar_t **argv)
PySys_SetArgv(argc-_PyOS_optind, argv+_PyOS_optind); PySys_SetArgv(argc-_PyOS_optind, argv+_PyOS_optind);
if ((Py_InspectFlag || (command == NULL && filename == NULL && module == NULL)) && if ((Py_InspectFlag || (command == NULL && filename == NULL && module == NULL)) &&
isatty(fileno(stdin))) { isatty(fileno(stdin)) &&
!Py_IsolatedFlag) {
PyObject *v; PyObject *v;
v = PyImport_ImportModule("readline"); v = PyImport_ImportModule("readline");
if (v == NULL) if (v == NULL)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment