diff --git a/HISTORY.rst b/HISTORY.rst index c6a5b99..311012b 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,6 +1,11 @@ ======= History ======= + +1.0.2 (2019-05-20) +------------------ + +* Stop environment override variables leaking into the process environment 1.0.1 (2019-04-16) ------------------ diff --git a/procrunner/__init__.py b/procrunner/__init__.py index b6560de..e508dea 100644 --- a/procrunner/__init__.py +++ b/procrunner/__init__.py @@ -3,7 +3,6 @@ from __future__ import absolute_import, division, print_function import codecs -import copy import logging import os import select @@ -438,9 +437,8 @@ if environment is not None: env = {key: _path_resolve(environment[key]) for key in environment} else: - env = os.environ + env = {key: value for key, value in os.environ.items()} if environment_override: - env = copy.copy(env) env.update( { key: str(_path_resolve(environment_override[key])) diff --git a/tests/test_procrunner_system.py b/tests/test_procrunner_system.py index f4fd500..5955463 100644 --- a/tests/test_procrunner_system.py +++ b/tests/test_procrunner_system.py @@ -58,11 +58,15 @@ sentinel_value = b"sentinel" tmpdir.join("tempfile").write(sentinel_value) tmpdir.join("reader.py").write("print(open('tempfile').read())") + assert "LEAK_DETECTOR" not in os.environ result = procrunner.run( [sys.executable, tmpdir.join("reader.py")], - environment_override={"PYTHONHASHSEED": "random"}, + environment_override={"PYTHONHASHSEED": "random", "LEAK_DETECTOR": "1"}, working_directory=tmpdir, ) assert result.returncode == 0 assert not result.stderr assert sentinel_value == result.stdout.strip() + assert ( + "LEAK_DETECTOR" not in os.environ + ), "overridden environment variable leaked into parent process"