From abb0847c98ee0ed1b2e274754eb72ef6512a282b Mon Sep 17 00:00:00 2001 From: Amadeus Date: Mon, 19 Oct 2026 15:51:13 -0300 Subject: [PATCH] bug: keep '=' in extra docker config environment values Split KEY=VALUE environment entries on the first '=' only, so values like -Dfile.encoding=UTF-8 or base64 tokens are not truncated. Closes #679 Co-Authored-By: Claude Opus 5.5 --- lean/components/docker/lean_runner.py | 2 +- tests/components/docker/test_lean_runner.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lean/components/docker/lean_runner.py b/lean/components/docker/lean_runner.py index 67b776a9..4f9b0067 100644 --- a/lean/components/docker/lean_runner.py +++ b/lean/components/docker/lean_runner.py @@ -969,7 +969,7 @@ def parse_extra_docker_config(run_options: Dict[str, Any], extra_docker_config: target = run_options["environment"] = {} if isinstance(extra_docker_config["environment"], list): target.update({item[0]: item[1] for item in [ - item if not isinstance(item, str) else (item.split("=")[0], item.split("=")[1]) for item in extra_docker_config["environment"] + item if not isinstance(item, str) else item.split("=", 1) for item in extra_docker_config["environment"] ]}) elif isinstance(extra_docker_config["environment"], dict): target.update(extra_docker_config["environment"]) diff --git a/tests/components/docker/test_lean_runner.py b/tests/components/docker/test_lean_runner.py index 6892b443..1ecd0eac 100644 --- a/tests/components/docker/test_lean_runner.py +++ b/tests/components/docker/test_lean_runner.py @@ -823,3 +823,11 @@ def path_is_mounted_in_files(path): assert all([key in backtesting_env and backtesting_env[key] == source_to_target(value) for key, value in paths_to_mount.items()]) + + +def test_lean_runner_parses_environment_values_containing_equals_from_extra_docker_configs() -> None: + run_options = {} + LeanRunner.parse_extra_docker_config(run_options, + {"environment": ["JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8", "TOKEN=abc=="]}) + + assert run_options["environment"] == {"JAVA_TOOL_OPTIONS": "-Dfile.encoding=UTF-8", "TOKEN": "abc=="}