Allow merging of args in both list and dict syntax

Signed-off-by: Piotr Kubiak <piotr-kubiak@users.noreply.github.com>
This commit is contained in:
Piotr Kubiak 2025-03-12 19:48:53 +01:00 committed by Povilas Kanapickas
parent 7d7533772b
commit f9489afaf5
3 changed files with 14 additions and 0 deletions

View File

@ -0,0 +1 @@
- Fixed error when merging args in list and dict syntax

View File

@ -1607,6 +1607,9 @@ def normalize_service(service, sub_dir=""):
for k, v in build["additional_contexts"].items():
new_additional_contexts.append(f"{k}={v}")
build["additional_contexts"] = new_additional_contexts
if "build" in service and "args" in service["build"]:
if isinstance(build["args"], dict):
build["args"] = norm_as_list(build["args"])
for key in ("command", "entrypoint"):
if key in service:
if isinstance(service[key], str):

View File

@ -68,6 +68,16 @@ class TestCanMergeBuild(unittest.TestCase):
{"build": {"dockerfile": "./dockerfile-1", "args": ["ENV2=2"]}},
{"build": {"dockerfile": "./dockerfile-1", "args": ["ENV1=1", "ENV2=2"]}},
),
(
{"build": {"dockerfile": "./dockerfile-1", "args": {"ENV1": "1"}}},
{"build": {"dockerfile": "./dockerfile-2", "args": {"ENV2": "2"}}},
{"build": {"dockerfile": "./dockerfile-2", "args": ["ENV1=1", "ENV2=2"]}},
),
(
{"build": {"dockerfile": "./dockerfile-1", "args": ["ENV1=1"]}},
{"build": {"dockerfile": "./dockerfile-2", "args": {"ENV2": "2"}}},
{"build": {"dockerfile": "./dockerfile-2", "args": ["ENV1=1", "ENV2=2"]}},
),
])
def test_parse_compose_file_when_multiple_composes(self, input, override, expected):
compose_test_1 = {"services": {"test-service": input}}