From 221cf1450192e9f83a571e91f77011534c43761b Mon Sep 17 00:00:00 2001 From: Sergei Biriukov Date: Sat, 29 Apr 2023 13:17:43 +1000 Subject: [PATCH] add tests for build value merge Signed-off-by: Sergei Biriukov --- pytests/test_rec_merge_one_build.py | 76 +++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 pytests/test_rec_merge_one_build.py diff --git a/pytests/test_rec_merge_one_build.py b/pytests/test_rec_merge_one_build.py new file mode 100644 index 0000000..a89619f --- /dev/null +++ b/pytests/test_rec_merge_one_build.py @@ -0,0 +1,76 @@ +import copy + +import pytest + +from podman_compose import rec_merge_one + +test_cases = [ + ({}, {"build": "."}, {"build": {"context": "."}}), + ({"build": "."}, {}, {"build": {"context": "."}}), + ({"build": "./dir-1"}, {"build": "./dir-2"}, {"build": {"context": "./dir-2"}}), + ({}, {"build": {"context": "./dir-1"}}, {"build": {"context": "./dir-1"}}), + ({"build": {"context": "./dir-1"}}, {}, {"build": {"context": "./dir-1"}}), + ( + {"build": {"context": "./dir-1"}}, + {"build": {"context": "./dir-2"}}, + {"build": {"context": "./dir-2"}}, + ), + ( + {}, + {"build": {"dockerfile": "./compose.yaml"}}, + {"build": {"dockerfile": "./compose.yaml"}}, + ), + ( + {"build": {"dockerfile": "./compose.yaml"}}, + {}, + {"build": {"dockerfile": "./compose.yaml"}}, + ), + ( + {"build": {"dockerfile": "./compose-1.yaml"}}, + {"build": {"dockerfile": "./compose-2.yaml"}}, + {"build": {"dockerfile": "./compose-2.yaml"}}, + ), + ( + {"build": {"dockerfile": "./compose-1.yaml"}}, + {"build": {"context": "./dir-2"}}, + {"build": {"dockerfile": "./compose-1.yaml", "context": "./dir-2"}}, + ), + ( + {"build": {"dockerfile": "./compose-1.yaml", "context": "./dir-1"}}, + {"build": {"dockerfile": "./compose-2.yaml", "context": "./dir-2"}}, + {"build": {"dockerfile": "./compose-2.yaml", "context": "./dir-2"}}, + ), +] + + +def test_rec_merge_one_for_build(): + for base, override, expected in copy.deepcopy(test_cases): + base_original = copy.deepcopy(base) + base = rec_merge_one(base, override) + test_result = expected == base + if not test_result: + print("base: ", base_original) + print("override: ", override) + print("expected: ", expected) + print("actual: ", base) + assert test_result + + +test_cases_with_exceptions = [ + ({}, {"build": 1234}, ValueError), + ({"build": 1234}, {}, ValueError), + ({"build": 1234}, {"build": 1234}, ValueError), + ({"build": []}, {}, ValueError), + ({}, {"build": []}, ValueError), + ({"build": []}, {"build": []}, ValueError), +] + + +def test_rec_merge_one_for_build_eception(): + for base, override, expected_exception in copy.deepcopy(test_cases_with_exceptions): + base_original = copy.deepcopy(base) + with pytest.raises(expected_exception): + base = rec_merge_one(base, override) + print("base: ", base_original) + print("override: ", override) + print("expected: ", expected_exception) \ No newline at end of file