From 35cf4bcb728d333551b81a184e4e80c05ce879ca Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Mon, 30 Dec 2024 00:52:46 +0200 Subject: [PATCH] tests: Add test for container_to_build_args() Signed-off-by: Povilas Kanapickas --- tests/unit/test_container_to_build_args.py | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 tests/unit/test_container_to_build_args.py diff --git a/tests/unit/test_container_to_build_args.py b/tests/unit/test_container_to_build_args.py new file mode 100644 index 0000000..61ddf6e --- /dev/null +++ b/tests/unit/test_container_to_build_args.py @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: GPL-2.0 + +import unittest +from unittest import mock + +from podman_compose import container_to_build_args + + +def create_compose_mock(project_name='test_project_name'): + compose = mock.Mock() + compose.project_name = project_name + compose.dirname = 'test_dirname' + compose.container_names_by_service.get = mock.Mock(return_value=None) + compose.prefer_volume_over_mount = False + compose.default_net = None + compose.networks = {} + compose.x_podman = {} + return compose + + +def get_minimal_container(): + return { + 'name': 'project_name_service_name1', + 'service_name': 'service_name', + 'image': 'new-image', + 'build': {}, + } + + +def get_minimal_args(): + args = mock.Mock() + args.build_arg = [] + return args + + +class TestContainerToBuildArgs(unittest.TestCase): + def test_minimal(self): + c = create_compose_mock() + + cnt = get_minimal_container() + args = get_minimal_args() + + args = container_to_build_args(c, cnt, args, lambda path: True) + self.assertEqual( + args, + [ + '-f', + './Containerfile', + '-t', + 'new-image', + '--no-cache', + '--pull-always', + '.', + ], + ) + + def test_platform(self): + c = create_compose_mock() + + cnt = get_minimal_container() + cnt['platform'] = 'linux/amd64' + args = get_minimal_args() + + args = container_to_build_args(c, cnt, args, lambda path: True) + self.assertEqual( + args, + [ + '-f', + './Containerfile', + '-t', + 'new-image', + '--platform', + 'linux/amd64', + '--no-cache', + '--pull-always', + '.', + ], + ) + + def test_tags(self): + c = create_compose_mock() + + cnt = get_minimal_container() + cnt['build']['tags'] = ['some-tag1', 'some-tag2:2'] + args = get_minimal_args() + + args = container_to_build_args(c, cnt, args, lambda path: True) + self.assertEqual( + args, + [ + '-f', + './Containerfile', + '-t', + 'new-image', + '-t', + 'some-tag1', + '-t', + 'some-tag2:2', + '--no-cache', + '--pull-always', + '.', + ], + ) + + def test_labels(self): + c = create_compose_mock() + + cnt = get_minimal_container() + cnt['build']['labels'] = ['some-label1', 'some-label2.2'] + args = get_minimal_args() + + args = container_to_build_args(c, cnt, args, lambda path: True) + self.assertEqual( + args, + [ + '-f', + './Containerfile', + '-t', + 'new-image', + '--label', + 'some-label1', + '--label', + 'some-label2.2', + '--no-cache', + '--pull-always', + '.', + ], + )