diff options
author | Steve Dower <steve.dower@microsoft.com> | 2016-09-17 19:22:41 (GMT) |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2016-09-17 19:22:41 (GMT) |
commit | 313523ce2dd67db67b7dcbcc5f6d6ca95922b34b (patch) | |
tree | 0ebcad214cf25fb898023da2011dcc5183942ca0 | |
parent | d2154ab0b728c8b5f5ec44d3496e8760a0504581 (diff) | |
download | cpython-313523ce2dd67db67b7dcbcc5f6d6ca95922b34b.zip cpython-313523ce2dd67db67b7dcbcc5f6d6ca95922b34b.tar.gz cpython-313523ce2dd67db67b7dcbcc5f6d6ca95922b34b.tar.bz2 |
Issue #28192: Don't import readline in isolated mode
-rw-r--r-- | Lib/site.py | 12 | ||||
-rw-r--r-- | Lib/test/test_site.py | 8 | ||||
-rw-r--r-- | Modules/main.c | 3 |
3 files changed, 11 insertions, 12 deletions
diff --git a/Lib/site.py b/Lib/site.py index 5250266..b637635 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -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() diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py index 9afa56e..b048648 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py @@ -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() diff --git a/Modules/main.c b/Modules/main.c index 0b82f48..6986d94 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -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) |