mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
bpo-22257: Small changes for PEP 432. (#1728)
PEP 432 specifies a number of large changes to interpreter startup code, including exposing a cleaner C-API. The major changes depend on a number of smaller changes. This patch includes all those smaller changes.
This commit is contained in:
parent
f9169ce6b4
commit
6b4be195cd
19 changed files with 2221 additions and 2006 deletions
|
|
@ -1134,12 +1134,15 @@ def _setup(sys_module, _imp_module):
|
|||
|
||||
|
||||
def _install(sys_module, _imp_module):
|
||||
"""Install importlib as the implementation of import."""
|
||||
"""Install importers for builtin and frozen modules"""
|
||||
_setup(sys_module, _imp_module)
|
||||
|
||||
sys.meta_path.append(BuiltinImporter)
|
||||
sys.meta_path.append(FrozenImporter)
|
||||
|
||||
|
||||
def _install_external_importers():
|
||||
"""Install importers that require external filesystem access"""
|
||||
global _bootstrap_external
|
||||
import _frozen_importlib_external
|
||||
_bootstrap_external = _frozen_importlib_external
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#coding:latin1
|
||||
|
||||
|
||||
|
||||
#coding:latin1
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -485,8 +485,29 @@ class CmdLineTest(unittest.TestCase):
|
|||
cwd=tmpdir)
|
||||
self.assertEqual(out.strip(), b"ok")
|
||||
|
||||
|
||||
class IgnoreEnvironmentTest(unittest.TestCase):
|
||||
|
||||
def run_ignoring_vars(self, predicate, **env_vars):
|
||||
# Runs a subprocess with -E set, even though we're passing
|
||||
# specific environment variables
|
||||
# Logical inversion to match predicate check to a zero return
|
||||
# code indicating success
|
||||
code = "import sys; sys.stderr.write(str(sys.flags)); sys.exit(not ({}))".format(predicate)
|
||||
return assert_python_ok('-E', '-c', code, **env_vars)
|
||||
|
||||
def test_ignore_PYTHONPATH(self):
|
||||
path = "should_be_ignored"
|
||||
self.run_ignoring_vars("'{}' not in sys.path".format(path),
|
||||
PYTHONPATH=path)
|
||||
|
||||
def test_ignore_PYTHONHASHSEED(self):
|
||||
self.run_ignoring_vars("sys.flags.hash_randomization == 1",
|
||||
PYTHONHASHSEED="0")
|
||||
|
||||
|
||||
def test_main():
|
||||
test.support.run_unittest(CmdLineTest)
|
||||
test.support.run_unittest(CmdLineTest, IgnoreEnvironmentTest)
|
||||
test.support.reap_children()
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@ class HelperFunctionsTests(unittest.TestCase):
|
|||
@unittest.skipUnless(site.ENABLE_USER_SITE, "requires access to PEP 370 "
|
||||
"user-site (site.ENABLE_USER_SITE)")
|
||||
def test_s_option(self):
|
||||
# (ncoghlan) Change this to use script_helper...
|
||||
usersite = site.USER_SITE
|
||||
self.assertIn(usersite, sys.path)
|
||||
|
||||
|
|
@ -199,7 +200,7 @@ class HelperFunctionsTests(unittest.TestCase):
|
|||
if usersite == site.getsitepackages()[0]:
|
||||
self.assertEqual(rc, 1)
|
||||
else:
|
||||
self.assertEqual(rc, 0)
|
||||
self.assertEqual(rc, 0, "User site still added to path with -s")
|
||||
|
||||
env = os.environ.copy()
|
||||
env["PYTHONNOUSERSITE"] = "1"
|
||||
|
|
@ -209,14 +210,16 @@ class HelperFunctionsTests(unittest.TestCase):
|
|||
if usersite == site.getsitepackages()[0]:
|
||||
self.assertEqual(rc, 1)
|
||||
else:
|
||||
self.assertEqual(rc, 0)
|
||||
self.assertEqual(rc, 0,
|
||||
"User site still added to path with PYTHONNOUSERSITE")
|
||||
|
||||
env = os.environ.copy()
|
||||
env["PYTHONUSERBASE"] = "/tmp"
|
||||
rc = subprocess.call([sys.executable, '-c',
|
||||
'import sys, site; sys.exit(site.USER_BASE.startswith("/tmp"))'],
|
||||
env=env)
|
||||
self.assertEqual(rc, 1)
|
||||
self.assertEqual(rc, 1,
|
||||
"User base not set by PYTHONUSERBASE")
|
||||
|
||||
def test_getuserbase(self):
|
||||
site.USER_BASE = None
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue