From b513f50f300486af9e4d189ad0b69eb119f3650b Mon Sep 17 00:00:00 2001 From: charliemirabile <46761267+charliemirabile@users.noreply.github.com> Date: Tue, 21 May 2024 17:29:30 -0400 Subject: [PATCH] test: add missing unit tests for selinux in verbose mount Support for setting the selinux flags on a bind mount specified using the verbose syntax was merged as part of #911, but at that time the PR lacked unit tests. This commit adds the missing tests Signed-off-by: charliemirabile <46761267+charliemirabile@users.noreply.github.com> --- pytests/test_container_to_args.py | 42 +++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/pytests/test_container_to_args.py b/pytests/test_container_to_args.py index f79062d..31cad4c 100644 --- a/pytests/test_container_to_args.py +++ b/pytests/test_container_to_args.py @@ -4,6 +4,8 @@ import unittest from os import path from unittest import mock +from parameterized import parameterized + from podman_compose import container_to_args @@ -428,3 +430,43 @@ class TestContainerToArgs(unittest.IsolatedAsyncioTestCase): "nvidia-smi", ], ) + + @parameterized.expand([ + (False, "z", ["--mount", "type=bind,source=./foo,destination=/mnt,z"]), + (False, "Z", ["--mount", "type=bind,source=./foo,destination=/mnt,Z"]), + (True, "z", ["-v", "./foo:/mnt:z"]), + (True, "Z", ["-v", "./foo:/mnt:Z"]), + ]) + async def test_selinux_volume(self, prefer_volume, selinux_type, expected_additional_args): + c = create_compose_mock() + c.prefer_volume_over_mount = prefer_volume + + cnt = get_minimal_container() + + # This is supposed to happen during `_parse_compose_file` + # but that is probably getting skipped during testing + cnt["_service"] = cnt["service_name"] + + cnt["volumes"] = [ + { + "type": "bind", + "source": "./foo", + "target": "/mnt", + "bind": { + "selinux": selinux_type, + }, + } + ] + + args = await container_to_args(c, cnt) + self.assertEqual( + args, + [ + "--name=project_name_service_name1", + "-d", + *expected_additional_args, + "--network=bridge", + "--network-alias=service_name", + "busybox", + ], + )