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=="}