Add an integration test for a podman build

This commit is contained in:
Joe Rickerby
2022-06-27 19:08:46 +01:00
parent e5ef3c1b76
commit f23d8aaae5
5 changed files with 70 additions and 34 deletions
+1 -14
View File
@@ -7,20 +7,7 @@ def pytest_addoption(parser) -> None:
parser.addoption(
"--run-emulation", action="store_true", default=False, help="run emulation tests"
)
def pytest_configure(config):
config.addinivalue_line("markers", "emulation: mark test requiring qemu binfmt_misc to run")
def pytest_collection_modifyitems(config, items) -> None:
if config.getoption("--run-emulation"):
# --run-emulation given in cli: do not skip emulation tests
return
skip_emulation = pytest.mark.skip(reason="need --run-emulation option to run")
for item in items:
if "emulation" in item.keywords:
item.add_marker(skip_emulation)
parser.addoption("--run-podman", action="store_true", default=False, help="run podman tests")
@pytest.fixture(
+4 -2
View File
@@ -17,8 +17,10 @@ def test_spam():
"""
@pytest.mark.emulation
def test(tmp_path):
def test(tmp_path, request):
if not request.config.getoption("--run-emulation"):
pytest.skip("needs --run-emulation option to run")
project_dir = tmp_path / "project"
project_with_a_test.generate(project_dir)
+37
View File
@@ -0,0 +1,37 @@
import pytest
from . import test_projects, utils
basic_project = test_projects.new_c_project()
def test(tmp_path, capfd, request):
if utils.platform != "linux":
pytest.skip("the test is only relevant to the linux build")
if not request.config.getoption("--run-podman"):
pytest.skip("needs --run-podman option to run")
project_dir = tmp_path / "project"
basic_project.generate(project_dir)
# build some musllinux and manylinux wheels (ensuring that we use two containers)
actual_wheels = utils.cibuildwheel_run(
project_dir,
add_env={
"CIBW_BUILD": "cp310-*{manylinux,musllinux}_x86_64",
"CIBW_BEFORE_ALL": "echo 'test log statement from before-all'",
},
)
# check that the expected wheels are produced
expected_wheels = [
w
for w in utils.expected_wheels("spam", "0.1.0")
if ("-cp310-" in w) and ("x86_64" in w) and ("manylinux" in w or "musllinux" in w)
]
assert set(actual_wheels) == set(expected_wheels)
# check that stdout is bring passed-though from container correctly
captured = capfd.readouterr()
assert "test log statement from before-all" in captured.out