From c51f512d8c58516595f7aba7100326e7fdabb13a Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Wed, 5 Jan 2022 23:52:40 -0500 Subject: [PATCH] Extract the SYSTEMROOT handler and document it. --- setuptools/tests/test_distutils_adoption.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/setuptools/tests/test_distutils_adoption.py b/setuptools/tests/test_distutils_adoption.py index cb26b77a13..1e73f9aa18 100644 --- a/setuptools/tests/test_distutils_adoption.py +++ b/setuptools/tests/test_distutils_adoption.py @@ -42,12 +42,24 @@ def popen_text(call): if sys.version_info < (3, 7) else functools.partial(call, text=True) +def win_sr(env): + """ + On Windows, SYSTEMROOT must be present to avoid + + > Fatal Python error: _Py_HashRandomization_Init: failed to + > get random numbers to initialize Python + """ + if env is None: + return + if platform.system() == 'Windows': + env['SYSTEMROOT'] = os.environ['SYSTEMROOT'] + return env + + def find_distutils(venv, imports='distutils', env=None, **kwargs): py_cmd = 'import {imports}; print(distutils.__file__)'.format(**locals()) cmd = ['python', '-c', py_cmd] - if platform.system() == 'Windows': - env['SYSTEMROOT'] = os.environ['SYSTEMROOT'] - return popen_text(venv.run)(cmd, env=env, **kwargs) + return popen_text(venv.run)(cmd, env=win_sr(env), **kwargs) def count_meta_path(venv, env=None): @@ -58,7 +70,7 @@ def count_meta_path(venv, env=None): print(len(list(filter(is_distutils, sys.meta_path)))) """) cmd = ['python', '-c', py_cmd] - return int(popen_text(venv.run)(cmd, env=env)) + return int(popen_text(venv.run)(cmd, env=win_sr(env))) def test_distutils_stdlib(venv):