diff --git a/newsfragments/1163.bugfix b/newsfragments/1163.bugfix new file mode 100644 index 00000000..9f8567fa --- /dev/null +++ b/newsfragments/1163.bugfix @@ -0,0 +1 @@ +- Fixed error when merging args in list and dict syntax diff --git a/podman_compose.py b/podman_compose.py index 60c77cad..018e513c 100755 --- a/podman_compose.py +++ b/podman_compose.py @@ -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): diff --git a/tests/unit/test_can_merge_build.py b/tests/unit/test_can_merge_build.py index 8fce6e18..20e0863d 100644 --- a/tests/unit/test_can_merge_build.py +++ b/tests/unit/test_can_merge_build.py @@ -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}}