blue-london-99273
09/12/2023, 3:50 PMcurved-television-6568
09/12/2023, 4:21 PMtest
goal, so it is these you want: https://www.pantsbuild.org/docs/reference-test#extra_env_varsblue-london-99273
09/12/2023, 4:36 PMexport WHITELISTED=VALUE
pants test --test-extra-env-vars="['WHITELISTED=$WHITELISTED']" ::
But I was hoping to have the env vars propagated from the parent environment like this, which doesn't work:
pants test --test-extra-env-vars="['WHITELISTED']" ::
Entries are strings in the formto use explicitly; or justENV_VAR=value
to copy the value of a variable in Pants's own environment.ENV_VAR
happy-kitchen-89482
09/12/2023, 7:46 PMhappy-kitchen-89482
09/12/2023, 7:46 PMfreezing-fall-2672
09/13/2023, 8:01 AMWHITELISTED=VALUE pants test --test-extra-env-vars="['WHITELISTED=$WHITELISTED']" ::
10:00:48.40 [ERROR] Completed: Run Pytest - (environment:local_docker, src/test_docker_env.py:tests) - failed (exit code 1).
============================= test session starts ==============================
platform linux -- Python 3.8.17, pytest-7.0.1, pluggy-1.0.0
rootdir: /pants-sandbox/pants-sandbox-zctlSX
plugins: forked-1.6.0, cov-3.0.0, xdist-2.5.0
collected 1 item
src/test_docker_env.py F [100%]
=================================== FAILURES ===================================
_______________________ test_env_is_propagated_to_tests ________________________
def test_env_is_propagated_to_tests():
assert os.environ["HARDCODED"] == "VALUE"
assert "NOT_WHITELISTED" not in os.environ
> assert os.environ["WHITELISTED"] == "VALUE"
E AssertionError: assert '' == 'VALUE'
E - VALUE
src/test_docker_env.py:7: AssertionError
- generated xml file: /pants-sandbox/pants-sandbox-zctlSX/src.test_docker_env.py.tests.xml -
=========================== short test summary info ============================
FAILED src/test_docker_env.py::test_env_is_propagated_to_tests - AssertionErr...
============================== 1 failed in 0.06s ===============================
ā src/test_docker_env.py:tests failed in 0.28s (ran in docker environment `local_docker`).
and if I try just the key I get
WHITELISTED=VALUE pants test --test-extra-env-vars="['WHITELISTED']" ::
10:02:12.27 [ERROR] Completed: Run Pytest - (environment:local_docker, src/test_docker_env.py:tests) - failed (exit code 1).
============================= test session starts ==============================
platform linux -- Python 3.8.17, pytest-7.0.1, pluggy-1.0.0
rootdir: /pants-sandbox/pants-sandbox-BHydas
plugins: forked-1.6.0, cov-3.0.0, xdist-2.5.0
collected 1 item
src/test_docker_env.py F [100%]
=================================== FAILURES ===================================
_______________________ test_env_is_propagated_to_tests ________________________
def test_env_is_propagated_to_tests():
assert os.environ["HARDCODED"] == "VALUE"
assert "NOT_WHITELISTED" not in os.environ
> assert os.environ["WHITELISTED"] == "VALUE"
src/test_docker_env.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = environ({'HOSTNAME': 'c330ad1fe9bc', 'PYTHON_VERSION': '3.8.17', 'PWD': '/pants-sandbox/pants-sandbox-BHydas', 'PYTHON...PEX_EXTRA_SYS_PATH__': 'src', 'PYTEST_CURRENT_TEST': 'src/test_docker_env.py::test_env_is_propagated_to_tests (call)'})
key = 'WHITELISTED'
def __getitem__(self, key):
try:
value = self._data[self.encodekey(key)]
except KeyError:
# raise KeyError with the original key value
> raise KeyError(key) from None
E KeyError: 'WHITELISTED'
/usr/local/lib/python3.8/os.py:675: KeyError
- generated xml file: /pants-sandbox/pants-sandbox-BHydas/src.test_docker_env.py.tests.xml -
=========================== short test summary info ============================
FAILED src/test_docker_env.py::test_env_is_propagated_to_tests - KeyError: 'W...
============================== 1 failed in 0.06s ===============================
ā src/test_docker_env.py:tests failed in 0.24s (ran in docker environment `local_docker`).
curved-television-6568
09/13/2023, 2:38 PMWHITELISTED=VALUE pants test --test-extra-env-vars="['WHITELISTED']" --help
and look for the current value of the extra_env_vars.. something like this:
--test-extra-env-vars="['<str>', '<str>', ...]"
PANTS_TEST_EXTRA_ENV_VARS
extra_env_vars
default: []
current value: [
...,
"FOO=baz"
] (from .pants.rc, pants.toml, from command-line flag)
Additional environment variables to include in test processes. Entries are strings in the form `ENV_VAR=value` to use explicitly; or just `ENV_VAR` to copy the value of a variable in Pants's own environment.
Can be overriden by field `test_extra_env_vars` on `local_environment`, `docker_environment`, or `remote_environment` targets.
freezing-fall-2672
09/13/2023, 2:41 PM--test-extra-env-vars="['<str>', '<str>', ...]"
PANTS_TEST_EXTRA_ENV_VARS
extra_env_vars
default: []
current value: [
"WHITELISTED"
] (from command-line flag)
for me.
I've copy and pasted your command above.curved-television-6568
09/13/2023, 2:46 PM⯠FOO=baz pants test --extra-env-vars=FOO .. -- -k test_env
[...]
=================================== FAILURES ===================================
___________________________________ test_env ___________________________________
def test_env():
> assert os.environ.get("FOO", "<not set>") == "BAR"
E AssertionError: assert 'baz' == 'BAR'
E - BAR
E + baz
curved-television-6568
09/13/2023, 2:47 PM⯠FOO=baz pants test --extra-env-vars="+['FOO']"
still works for me.freezing-fall-2672
09/13/2023, 2:47 PMWHITELISTED=VALUE pants test --test-extra-env-vars=WHITELISTED ::
16:47:42.17 [ERROR] Completed: Run Pytest - (environment:local_docker, src/test_docker_env.py:tests) - failed (exit code 1).
============================= test session starts ==============================
platform linux -- Python 3.8.17, pytest-7.0.1, pluggy-1.0.0
rootdir: /pants-sandbox/pants-sandbox-P2YAzC
plugins: forked-1.6.0, cov-3.0.0, xdist-2.5.0
collected 1 item
src/test_docker_env.py F [100%]
=================================== FAILURES ===================================
_______________________ test_env_is_propagated_to_tests ________________________
def test_env_is_propagated_to_tests():
assert os.environ["HARDCODED"] == "VALUE"
assert "NOT_WHITELISTED" not in os.environ
> assert os.environ["WHITELISTED"] == "VALUE"
src/test_docker_env.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = environ({'HOSTNAME': 'c330ad1fe9bc', 'PYTHON_VERSION': '3.8.17', 'PWD': '/pants-sandbox/pants-sandbox-P2YAzC', 'PYTHON...PEX_EXTRA_SYS_PATH__': 'src', 'PYTEST_CURRENT_TEST': 'src/test_docker_env.py::test_env_is_propagated_to_tests (call)'})
key = 'WHITELISTED'
def __getitem__(self, key):
try:
value = self._data[self.encodekey(key)]
except KeyError:
# raise KeyError with the original key value
> raise KeyError(key) from None
E KeyError: 'WHITELISTED'
/usr/local/lib/python3.8/os.py:675: KeyError
- generated xml file: /pants-sandbox/pants-sandbox-P2YAzC/src.test_docker_env.py.tests.xml -
=========================== short test summary info ============================
FAILED src/test_docker_env.py::test_env_is_propagated_to_tests - KeyError: 'W...
============================== 1 failed in 0.05s ===============================
ā src/test_docker_env.py:tests failed in 0.26s (ran in docker environment `local_docker`).
curved-television-6568
09/13/2023, 2:48 PMfreezing-fall-2672
09/13/2023, 2:48 PMcurved-television-6568
09/13/2023, 2:49 PMfreezing-fall-2672
09/13/2023, 2:49 PMcurved-television-6568
09/13/2023, 2:49 PMcurved-television-6568
09/13/2023, 2:49 PMhappy-kitchen-89482
09/13/2023, 2:50 PMfreezing-fall-2672
09/13/2023, 2:50 PMfreezing-fall-2672
09/13/2023, 2:51 PMcurved-television-6568
09/13/2023, 2:55 PMfreezing-fall-2672
09/13/2023, 2:56 PMblue-london-99273
09/13/2023, 3:05 PMcurved-television-6568
09/13/2023, 3:06 PMcurved-television-6568
09/13/2023, 3:06 PMfreezing-fall-2672
09/13/2023, 3:07 PMfreezing-fall-2672
09/13/2023, 3:07 PMcurved-television-6568
09/13/2023, 3:07 PM-ldebug
it would be interesting to see the commands invoked, and possibly if thereās any sandboxes to look into.freezing-fall-2672
09/13/2023, 3:08 PM17:08:14.24 [INFO] Initialization options changed: reinitializing scheduler...
17:08:17.67 [INFO] Scheduler initialized.
17:08:20.11 [ERROR] Completed: Run Pytest - (environment:local_docker, src/test_docker_env.py:tests) - failed (exit code 1).
============================= test session starts ==============================
platform linux -- Python 3.8.17, pytest-7.0.1, pluggy-1.0.0
rootdir: /pants-sandbox/pants-sandbox-67IjmE
plugins: forked-1.6.0, cov-3.0.0, xdist-2.5.0
collected 1 item
src/test_docker_env.py F [100%]
=================================== FAILURES ===================================
_______________________ test_env_is_propagated_to_tests ________________________
def test_env_is_propagated_to_tests():
assert os.environ["HARDCODED"] == "VALUE"
assert "NOT_WHITELISTED" not in os.environ
> assert os.environ["WHITELISTED"] == "VALUE"
src/test_docker_env.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = environ({'HOSTNAME': '5881b149961d', 'PYTHON_VERSION': '3.8.17', 'PWD': '/pants-sandbox/pants-sandbox-67IjmE', 'PYTHON...PEX_EXTRA_SYS_PATH__': 'src', 'PYTEST_CURRENT_TEST': 'src/test_docker_env.py::test_env_is_propagated_to_tests (call)'})
key = 'WHITELISTED'
def __getitem__(self, key):
try:
value = self._data[self.encodekey(key)]
except KeyError:
# raise KeyError with the original key value
> raise KeyError(key) from None
E KeyError: 'WHITELISTED'
/usr/local/lib/python3.8/os.py:675: KeyError
- generated xml file: /pants-sandbox/pants-sandbox-67IjmE/src.test_docker_env.py.tests.xml -
=========================== short test summary info ============================
FAILED src/test_docker_env.py::test_env_is_propagated_to_tests - KeyError: 'W...
============================== 1 failed in 0.07s ===============================
ā src/test_docker_env.py:tests failed in 0.45s (ran in docker environment `local_docker`).
freezing-fall-2672
09/13/2023, 3:08 PMcurved-television-6568
09/13/2023, 3:09 PMpants -ldebug test ā¦
freezing-fall-2672
09/13/2023, 3:10 PMWHITELISTED=VALUE pants -ldebug test --test-extra-env-vars=WHITELISTED ::
17:10:46.96 [ERROR] Completed: Run Pytest - (environment:local_docker, src/test_docker_env.py:tests) - failed (exit code 1).
============================= test session starts ==============================
platform linux -- Python 3.8.17, pytest-7.0.1, pluggy-1.0.0
rootdir: /pants-sandbox/pants-sandbox-BDxIIJ
plugins: forked-1.6.0, cov-3.0.0, xdist-2.5.0
collected 1 item
src/test_docker_env.py F [100%]
=================================== FAILURES ===================================
_______________________ test_env_is_propagated_to_tests ________________________
def test_env_is_propagated_to_tests():
assert os.environ["HARDCODED"] == "VALUE"
assert "NOT_WHITELISTED" not in os.environ
> assert os.environ["WHITELISTED"] == "VALUE"
src/test_docker_env.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = environ({'HOSTNAME': '5881b149961d', 'PYTHON_VERSION': '3.8.17', 'PWD': '/pants-sandbox/pants-sandbox-BDxIIJ', 'PYTHON...PEX_EXTRA_SYS_PATH__': 'src', 'PYTEST_CURRENT_TEST': 'src/test_docker_env.py::test_env_is_propagated_to_tests (call)'})
key = 'WHITELISTED'
def __getitem__(self, key):
try:
value = self._data[self.encodekey(key)]
except KeyError:
# raise KeyError with the original key value
> raise KeyError(key) from None
E KeyError: 'WHITELISTED'
/usr/local/lib/python3.8/os.py:675: KeyError
- generated xml file: /pants-sandbox/pants-sandbox-BDxIIJ/src.test_docker_env.py.tests.xml -
=========================== short test summary info ============================
FAILED src/test_docker_env.py::test_env_is_propagated_to_tests - KeyError: 'W...
============================== 1 failed in 0.06s ===============================
ā src/test_docker_env.py:tests failed in 0.26s (ran in docker environment `local_docker`).
my badfreezing-fall-2672
09/13/2023, 3:13 PMcurved-television-6568
09/13/2023, 3:13 PM--keep-sandbox=always
I think it isfreezing-fall-2672
09/13/2023, 3:14 PMrootdir: /pants-sandbox/pants-sandbox-XJNMRw
- yes, already added the flagcurved-television-6568
09/13/2023, 3:14 PMkeep-sandboxes
freezing-fall-2672
09/13/2023, 3:14 PMcurved-television-6568
09/13/2023, 3:15 PMfreezing-fall-2672
09/13/2023, 3:15 PMl /private/var/folders/ll/98hnvg_n5l3by0224q_qybc40000gn/T/pants-sandbox-XJNMRw
Permissions Size User Date Modified Name
drwxr-xr-x@ - elmcrest 13 Sep 17:11 .cache
.rw-r--r--@ 51 elmcrest 13 Sep 17:11 .coveragerc
drwxr-xr-x@ - elmcrest 13 Sep 17:11 .pytest_cache
lrwxr-xr-x@ 43 elmcrest 13 Sep 17:11 .python-build-standalone -> /pants-named-caches/python_build_standalone
.rwxr-xr-x@ 368 elmcrest 13 Sep 17:11 __run.sh
drwxr-xr-x@ - elmcrest 13 Sep 17:11 extra-output
drwxr-xr-x@ - elmcrest 13 Sep 17:11 local_dists.pex
drwxr-xr-x@ - elmcrest 13 Sep 17:11 pytest.pex
drwxr-xr-x@ - elmcrest 13 Sep 17:11 pytest_runner.pex
.rwxr-xr-x@ 2.6k elmcrest 13 Sep 17:11 pytest_runner.pex_bin_python_shim.sh
.rwxr-xr-x@ 2.6k elmcrest 13 Sep 17:11 pytest_runner.pex_pex_shim.sh
drwxr-xr-x@ - elmcrest 13 Sep 17:11 requirements.pex
drwxr-xr-x@ - elmcrest 13 Sep 17:11 src
.rw-r--r--@ 1.3k elmcrest 13 Sep 17:11 src.test_docker_env.py.tests.xml
freezing-fall-2672
09/13/2023, 3:15 PMfreezing-fall-2672
09/13/2023, 3:15 PMfreezing-fall-2672
09/13/2023, 3:15 PMXJNMRw
curved-television-6568
09/13/2023, 3:16 PM__run.sh
just to confirm the envfreezing-fall-2672
09/13/2023, 3:16 PMcat __run.sh --style=plain
#!/usr/bin/env bash
# This command line should execute the same process as pants did internally.
cd /private/var/folders/ll/98hnvg_n5l3by0224q_qybc40000gn/T/pants-sandbox-XJNMRw
env -i HARDCODED=VALUE PEX_EXTRA_SYS_PATH=src ./pytest_runner.pex_pex_shim.sh $'--color=yes' $'--junit-xml=src.test_docker_env.py.tests.xml' -o $'junit_family=xunit2' src/test_docker_env.py
curved-television-6568
09/13/2023, 3:16 PMfreezing-fall-2672
09/13/2023, 3:17 PMcurved-television-6568
09/13/2023, 3:17 PMfreezing-fall-2672
09/13/2023, 3:17 PMcurved-television-6568
09/13/2023, 3:17 PMcurved-television-6568
09/13/2023, 3:17 PMcurved-television-6568
09/13/2023, 3:17 PMfreezing-fall-2672
09/13/2023, 3:17 PMcurved-television-6568
09/13/2023, 3:18 PMcurved-television-6568
09/13/2023, 3:19 PMfreezing-fall-2672
09/13/2023, 3:20 PMWHITELISTED=VALUE pants -ldebug test --test-extra-env-vars=WHITELISTED :: --keep-sandboxes=always
17:20:06.03 [INFO] Preserving local process execution dir /private/var/folders/ll/98hnvg_n5l3by0224q_qybc40000gn/T/pants-sandbox-xbXhgg for Install Python for Pants usage
17:20:06.17 [INFO] Preserving local process execution dir /private/var/folders/ll/98hnvg_n5l3by0224q_qybc40000gn/T/pants-sandbox-rQOAbH for Run Pytest for src/test_docker_env.py:tests
17:20:06.41 [ERROR] Completed: Run Pytest - (environment:local_docker, src/test_docker_env.py:tests) - failed (exit code 1).
============================= test session starts ==============================
platform linux -- Python 3.8.17, pytest-7.0.1, pluggy-1.0.0
rootdir: /pants-sandbox/pants-sandbox-rQOAbH
plugins: forked-1.6.0, cov-3.0.0, xdist-2.5.0
collected 1 item
src/test_docker_env.py F [100%]
=================================== FAILURES ===================================
_______________________ test_env_is_propagated_to_tests ________________________
def test_env_is_propagated_to_tests():
assert os.environ["HARDCODED"] == "VALUE"
assert "NOT_WHITELISTED" not in os.environ
> assert os.environ["WHITELISTED"] == "VALUE"
src/test_docker_env.py:7:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = environ({'HOSTNAME': '7f5378804b38', 'PYTHON_VERSION': '3.8.17', 'PWD': '/pants-sandbox/pants-sandbox-rQOAbH', 'PYTHON...PEX_EXTRA_SYS_PATH__': 'src', 'PYTEST_CURRENT_TEST': 'src/test_docker_env.py::test_env_is_propagated_to_tests (call)'})
key = 'WHITELISTED'
def __getitem__(self, key):
try:
value = self._data[self.encodekey(key)]
except KeyError:
# raise KeyError with the original key value
> raise KeyError(key) from None
E KeyError: 'WHITELISTED'
/usr/local/lib/python3.8/os.py:675: KeyError
- generated xml file: /pants-sandbox/pants-sandbox-rQOAbH/src.test_docker_env.py.tests.xml -
=========================== short test summary info ============================
FAILED src/test_docker_env.py::test_env_is_propagated_to_tests - KeyError: 'W...
============================== 1 failed in 0.06s ===============================
ā src/test_docker_env.py:tests failed in 0.24s (ran in docker environment `local_docker`).
this?curved-television-6568
09/13/2023, 3:21 PM/private/var/folders/ll/98hnvg_n5l3by0224q_qybc40000gn/T/pants-sandbox-rQOAbH
freezing-fall-2672
09/13/2023, 3:21 PMcurved-television-6568
09/13/2023, 3:21 PMfreezing-fall-2672
09/13/2023, 3:21 PMcurved-television-6568
09/13/2023, 3:22 PMfreezing-fall-2672
09/13/2023, 3:22 PMcurved-television-6568
09/13/2023, 3:22 PMcurved-television-6568
09/13/2023, 3:23 PMfreezing-fall-2672
09/13/2023, 3:23 PMcurved-television-6568
09/13/2023, 3:24 PMfreezing-fall-2672
09/13/2023, 3:24 PMcurved-television-6568
09/13/2023, 3:24 PMfreezing-fall-2672
09/13/2023, 3:25 PMcurved-television-6568
09/13/2023, 3:26 PMfreezing-fall-2672
09/13/2023, 3:26 PMfreezing-fall-2672
09/13/2023, 3:27 PMblue-london-99273
09/13/2023, 4:33 PMenv_process_result = await Get(
ProcessResult,
Process(
["env", "-0"],
env=session_values[CompleteEnvironmentVars], # <----- Explicitly pass env
description=f"Extract environment variables from {description_of_env_source}",
level=LogLevel.DEBUG,
cache_scope=env_tgt.executable_search_path_cache_scope(),
),
)
freezing-fall-2672
09/13/2023, 5:24 PMblue-london-99273
09/13/2023, 5:41 PMcurved-television-6568
09/13/2023, 9:41 PMENV WHITELISTED=value
in the Dockerfile
building your image you use for the docker_environment
but as we use python:3.8.17-slim
there is no such env var set in there.
I forgot to treat the docker env as a remote execution target. Consider remote execution, then itās the environment of that remote machine that will be used, and the same is with running in a docker contariner, it is the environment in that container that is used, and what the local environment running the pants client is does not affect either of them.curved-television-6568
09/13/2023, 9:43 PMextra-vars=NAME=VALUE
syntax and rely on your invocation to set that value accordingly.curved-television-6568
09/13/2023, 9:46 PMif env_tgt.val:
if env_tgt.val.has_field(DockerImageField):
description_of_env_source = f"the Docker image {env_tgt.val[DockerImageField].value}"
elif env_tgt.val.has_field(RemotePlatformField):
description_of_env_source = "the remote execution environment"
else:
# Else, it's a local environment.
return session_values[CompleteEnvironmentVars] # << HERE
freezing-fall-2672
09/14/2023, 6:03 AMpants test --test-extra-env-vars="['WHITELISTED=VALUE']" ::
08:02:00.58 [INFO] Completed: Run Pytest - (environment:local_docker, src/test_docker_env.py:tests) - succeeded.
ā src/test_docker_env.py:tests succeeded in 0.21s (memoized for docker environment `local_docker`).
freezing-fall-2672
09/14/2023, 6:04 AM--test-extra-env-vars
or --extra-env-vars
- both work.happy-kitchen-89482
09/14/2023, 9:22 AMpants test --extra-env-vars
implicitly adds the test-
scope to the flag.freezing-fall-2672
09/14/2023, 9:53 AM