mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #16400: Add command line option for isolated mode.
-I Run Python in isolated mode. This also implies -E and -s. In isolated mode sys.path contains neither the script’s directory nor the user’s site-packages directory. All PYTHON* environment variables are ignored, too. Further restrictions may be imposed to prevent the user from injecting malicious code.
This commit is contained in:
parent
562d9cbfe9
commit
ad73a9cf97
11 changed files with 77 additions and 10 deletions
|
@ -4,6 +4,7 @@
|
|||
|
||||
import test.support, unittest
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
@ -439,6 +440,31 @@ class CmdLineTest(unittest.TestCase):
|
|||
self.assertEqual(b'', out)
|
||||
|
||||
|
||||
def test_isolatedmode(self):
|
||||
self.verify_valid_flag('-I')
|
||||
self.verify_valid_flag('-IEs')
|
||||
rc, out, err = assert_python_ok('-I', '-c',
|
||||
'from sys import flags as f; '
|
||||
'print(f.no_user_site, f.ignore_environment, f.isolated)',
|
||||
# dummyvar to prevent extranous -E
|
||||
dummyvar="")
|
||||
self.assertEqual(out.strip(), b'1 1 1')
|
||||
with test.support.temp_cwd() as tmpdir:
|
||||
fake = os.path.join(tmpdir, "uuid.py")
|
||||
main = os.path.join(tmpdir, "main.py")
|
||||
with open(fake, "w") as f:
|
||||
f.write("raise RuntimeError('isolated mode test')\n")
|
||||
with open(main, "w") as f:
|
||||
f.write("import uuid\n")
|
||||
f.write("print('ok')\n")
|
||||
self.assertRaises(subprocess.CalledProcessError,
|
||||
subprocess.check_output,
|
||||
[sys.executable, main], cwd=tmpdir,
|
||||
stderr=subprocess.DEVNULL)
|
||||
out = subprocess.check_output([sys.executable, "-I", main],
|
||||
cwd=tmpdir)
|
||||
self.assertEqual(out.strip(), b"ok")
|
||||
|
||||
def test_main():
|
||||
test.support.run_unittest(CmdLineTest)
|
||||
test.support.reap_children()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue