Adds disable_host_mount suboption to container-engine

This commit is contained in:
Joe Rickerby
2023-11-21 22:25:20 +00:00
parent fff9ec32ed
commit 7c99262c00
8 changed files with 100 additions and 21 deletions
+27 -1
View File
@@ -14,7 +14,7 @@ import tomli_w
from cibuildwheel.environment import EnvironmentAssignmentBash
from cibuildwheel.oci_container import OCIContainer, OCIContainerEngineConfig
from cibuildwheel.util import detect_ci_provider
from cibuildwheel.util import CIProvider, detect_ci_provider
# Test utilities
@@ -415,3 +415,29 @@ def test_enforce_32_bit(container_engine, image, shell_args):
text=True,
).stdout
assert json.loads(container_args) == shell_args
@pytest.mark.parametrize(
("config", "should_have_host_mount"),
[
("{name}", True),
("{name}; disable_host_mount: false", True),
("{name}; disable_host_mount: true", False),
],
)
def test_disable_host_mount(tmp_path: Path, container_engine, config, should_have_host_mount):
if detect_ci_provider() is CIProvider.circle_ci:
pytest.skip("Skipping test on CircleCI because docker there does not support --volume")
engine = OCIContainerEngineConfig.from_config_string(config.format(name=container_engine.name))
sentinel_file = tmp_path / "sentinel"
sentinel_file.write_text("12345")
with OCIContainer(engine=engine, image=DEFAULT_IMAGE) as container:
host_mount_path = "/host" + str(sentinel_file)
if should_have_host_mount:
assert container.call(["cat", host_mount_path], capture_output=True) == "12345"
else:
with pytest.raises(subprocess.CalledProcessError):
container.call(["cat", host_mount_path], capture_output=True)
+23 -2
View File
@@ -201,41 +201,61 @@ def test_toml_environment_quoting(tmp_path: Path, toml_assignment, result_value)
@pytest.mark.parametrize(
("toml_assignment", "result_name", "result_create_args"),
("toml_assignment", "result_name", "result_create_args", "result_disable_host_mount"),
[
(
'container-engine = "podman"',
"podman",
[],
False,
),
(
'container-engine = {name = "podman"}',
"podman",
[],
False,
),
(
'container-engine = "docker; create_args: --some-option"',
"docker",
["--some-option"],
False,
),
(
'container-engine = {name = "docker", create-args = ["--some-option"]}',
"docker",
["--some-option"],
False,
),
(
'container-engine = {name = "docker", create-args = ["--some-option", "value that contains spaces"]}',
"docker",
["--some-option", "value that contains spaces"],
False,
),
(
'container-engine = {name = "docker", create-args = ["--some-option", "value;that;contains;semicolons"]}',
"docker",
["--some-option", "value;that;contains;semicolons"],
False,
),
(
'container-engine = {name = "docker", disable-host-mount = true}',
"docker",
[],
True,
),
(
'container-engine = {name = "docker", disable_host_mount = true}',
"docker",
[],
True,
),
],
)
def test_container_engine_option(tmp_path: Path, toml_assignment, result_name, result_create_args):
def test_container_engine_option(
tmp_path: Path, toml_assignment, result_name, result_create_args, result_disable_host_mount
):
args = CommandLineArguments.defaults()
args.package_dir = tmp_path
@@ -253,6 +273,7 @@ def test_container_engine_option(tmp_path: Path, toml_assignment, result_name, r
assert parsed_container_engine.name == result_name
assert parsed_container_engine.create_args == result_create_args
assert parsed_container_engine.disable_host_mount == result_disable_host_mount
def test_environment_pass_references():