chore(ci): split emulation tests per architecture (#1839)
This commit is contained in:
+6
-2
@@ -8,12 +8,16 @@ import pytest
|
||||
|
||||
from cibuildwheel.util import detect_ci_provider
|
||||
|
||||
from .utils import platform
|
||||
from .utils import EMULATED_ARCHS, platform
|
||||
|
||||
|
||||
def pytest_addoption(parser) -> None:
|
||||
parser.addoption(
|
||||
"--run-emulation", action="store_true", default=False, help="run emulation tests"
|
||||
"--run-emulation",
|
||||
action="store",
|
||||
default=None,
|
||||
help="run emulation tests",
|
||||
choices=("all", *EMULATED_ARCHS),
|
||||
)
|
||||
parser.addoption("--run-podman", action="store_true", default=False, help="run podman tests")
|
||||
parser.addoption(
|
||||
|
||||
+10
-6
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import itertools
|
||||
import subprocess
|
||||
|
||||
import pytest
|
||||
@@ -18,9 +19,13 @@ def test_spam():
|
||||
|
||||
|
||||
def test(tmp_path, request):
|
||||
if not request.config.getoption("--run-emulation"):
|
||||
archs = request.config.getoption("--run-emulation")
|
||||
if archs is None:
|
||||
pytest.skip("needs --run-emulation option to run")
|
||||
|
||||
if archs == "all":
|
||||
archs = " ".join(utils.EMULATED_ARCHS)
|
||||
|
||||
project_dir = tmp_path / "project"
|
||||
project_with_a_test.generate(project_dir)
|
||||
|
||||
@@ -30,15 +35,14 @@ def test(tmp_path, request):
|
||||
add_env={
|
||||
"CIBW_TEST_REQUIRES": "pytest",
|
||||
"CIBW_TEST_COMMAND": "pytest {project}/test",
|
||||
"CIBW_ARCHS": "aarch64 ppc64le s390x",
|
||||
"CIBW_ARCHS": archs,
|
||||
},
|
||||
)
|
||||
|
||||
# also check that we got the right wheels
|
||||
expected_wheels = (
|
||||
utils.expected_wheels("spam", "0.1.0", machine_arch="aarch64")
|
||||
+ utils.expected_wheels("spam", "0.1.0", machine_arch="ppc64le")
|
||||
+ utils.expected_wheels("spam", "0.1.0", machine_arch="s390x")
|
||||
expected_wheels = itertools.chain.from_iterable(
|
||||
utils.expected_wheels("spam", "0.1.0", machine_arch=arch, single_arch=True)
|
||||
for arch in archs.split(" ")
|
||||
)
|
||||
assert set(actual_wheels) == set(expected_wheels)
|
||||
|
||||
|
||||
+6
-1
@@ -13,8 +13,12 @@ import sys
|
||||
from tempfile import TemporaryDirectory
|
||||
from typing import Final
|
||||
|
||||
from cibuildwheel.architecture import Architecture
|
||||
from cibuildwheel.util import CIBW_CACHE_PATH
|
||||
|
||||
EMULATED_ARCHS: Final[list[str]] = sorted(
|
||||
arch.value for arch in (Architecture.all_archs("linux") - Architecture.auto_archs("linux"))
|
||||
)
|
||||
SINGLE_PYTHON_VERSION: Final[tuple[int, int]] = (3, 12)
|
||||
|
||||
platform: str
|
||||
@@ -154,6 +158,7 @@ def expected_wheels(
|
||||
python_abi_tags=None,
|
||||
include_universal2=False,
|
||||
single_python=False,
|
||||
single_arch=False,
|
||||
):
|
||||
"""
|
||||
Returns a list of expected wheels from a run of cibuildwheel.
|
||||
@@ -237,7 +242,7 @@ def expected_wheels(
|
||||
if platform == "linux":
|
||||
architectures = [arch_name_for_linux(machine_arch)]
|
||||
|
||||
if machine_arch == "x86_64":
|
||||
if machine_arch == "x86_64" and not single_arch:
|
||||
architectures.append("i686")
|
||||
|
||||
if len(manylinux_versions) > 0:
|
||||
|
||||
Reference in New Issue
Block a user