Files

226 lines
8.1 KiB
Python
Raw Permalink Normal View History

2021-01-31 17:14:15 -05:00
from packaging.specifiers import SpecifierSet
import cibuildwheel.selector
2025-01-27 20:35:56 +01:00
from cibuildwheel.selector import BuildSelector, EnableGroup
2026-04-01 10:23:02 -04:00
def test_build() -> None:
2024-11-14 11:39:52 -05:00
build_selector = BuildSelector(
build_config="cp3*-* *-manylinux*", skip_config="", enable=frozenset([EnableGroup.PyPy])
2024-11-14 11:39:52 -05:00
)
2021-02-14 20:44:20 +01:00
assert build_selector("cp36-manylinux_x86_64")
assert build_selector("cp37-manylinux_x86_64")
2021-08-07 18:38:23 +01:00
assert build_selector("cp310-manylinux_x86_64")
assert build_selector("cp311-manylinux_x86_64")
2023-08-07 12:31:37 -04:00
assert build_selector("cp312-manylinux_x86_64")
2024-08-03 20:46:45 +02:00
assert build_selector("cp313-manylinux_x86_64")
assert build_selector("cp314-manylinux_x86_64")
2025-05-15 09:06:48 -04:00
assert build_selector("pp311-manylinux_x86_64")
2021-02-14 20:44:20 +01:00
assert build_selector("cp36-manylinux_i686")
assert build_selector("cp37-manylinux_i686")
assert build_selector("cp36-macosx_intel")
assert build_selector("cp37-macosx_intel")
assert build_selector("cp39-macosx_intel")
assert build_selector("cp39-macosx_universal2")
assert build_selector("cp39-macosx_arm64")
2025-05-15 09:06:48 -04:00
assert not build_selector("pp310-macosx_intel")
assert not build_selector("pp311-macosx_intel")
2021-05-03 11:45:43 -04:00
assert build_selector("cp36-win32")
assert build_selector("cp37-win32")
2025-05-15 09:06:48 -04:00
assert not build_selector("pp310-win32")
assert not build_selector("pp311-win32")
2021-05-03 11:45:43 -04:00
assert build_selector("cp36-win_amd64")
assert build_selector("cp37-win_amd64")
2021-08-07 18:38:23 +01:00
assert build_selector("cp310-win_amd64")
assert build_selector("cp311-win_amd64")
2023-08-07 12:31:37 -04:00
assert build_selector("cp312-win_amd64")
2024-08-03 20:46:45 +02:00
assert build_selector("cp313-win_amd64")
assert build_selector("cp314-win_amd64")
2025-05-15 09:06:48 -04:00
assert not build_selector("pp310-win_amd64")
assert not build_selector("pp311-win_amd64")
2026-04-01 10:23:02 -04:00
def test_build_filter_pre() -> None:
build_selector = BuildSelector(
build_config="cp3*-* *-manylinux*",
skip_config="",
enable=frozenset([EnableGroup.CPythonPrerelease, EnableGroup.PyPy]),
)
assert build_selector("cp37-manylinux_x86_64")
2024-05-12 02:26:18 +02:00
assert build_selector("cp313-manylinux_x86_64")
assert build_selector("cp37-win_amd64")
2024-05-12 02:26:18 +02:00
assert build_selector("cp313-win_amd64")
assert not build_selector("cp313t-manylinux_x86_64")
2026-04-01 10:23:02 -04:00
def test_build_filter_pypy() -> None:
2025-05-15 09:06:48 -04:00
build_selector = BuildSelector(
build_config="*",
skip_config="",
enable=frozenset([EnableGroup.PyPy]),
)
assert build_selector("pp311-manylinux_x86_64")
2025-09-08 17:57:14 +03:00
assert not build_selector("pp310-manylinux_x86_64")
2025-05-15 09:06:48 -04:00
assert not build_selector("pp38-manylinux_x86_64")
assert not build_selector("pp39-manylinux_x86_64")
2026-04-01 10:23:02 -04:00
def test_build_filter_pypy_eol() -> None:
2025-05-15 09:06:48 -04:00
build_selector = BuildSelector(
build_config="*",
skip_config="",
enable=frozenset([EnableGroup.PyPyEoL]),
)
assert not build_selector("pp311-manylinux_x86_64")
2025-09-08 17:57:14 +03:00
assert build_selector("pp310-manylinux_x86_64")
2025-05-15 09:06:48 -04:00
assert build_selector("pp38-manylinux_x86_64")
assert build_selector("pp39-manylinux_x86_64")
2026-04-01 10:23:02 -04:00
def test_build_filter_pypy_all() -> None:
2025-05-15 09:06:48 -04:00
build_selector = BuildSelector(
build_config="*",
skip_config="",
enable=frozenset([EnableGroup.PyPyEoL, EnableGroup.PyPy]),
)
assert build_selector("pp310-manylinux_x86_64")
assert build_selector("pp311-manylinux_x86_64")
assert build_selector("pp38-manylinux_x86_64")
assert build_selector("pp39-manylinux_x86_64")
2026-04-01 10:23:02 -04:00
def test_build_filter_pyodide_prerelease() -> None:
build_selector = BuildSelector(
build_config="*",
skip_config="",
enable=frozenset([EnableGroup.PyodidePrerelease]),
)
assert build_selector("cp312-pyodide_wasm32")
assert build_selector("cp313-pyodide_wasm32")
2026-04-01 10:23:02 -04:00
def test_build_filter_pyodide() -> None:
build_selector = BuildSelector(
build_config="*",
skip_config="",
enable=frozenset(),
)
assert build_selector("cp312-pyodide_wasm32")
2025-07-13 07:08:50 +05:30
assert build_selector("cp313-pyodide_wasm32")
2026-04-01 10:23:02 -04:00
def test_skip() -> None:
2021-04-30 17:56:34 -04:00
build_selector = BuildSelector(
2024-11-14 11:39:52 -05:00
build_config="*",
2025-05-15 09:06:48 -04:00
skip_config="pp310-* cp3?-manylinux_i686 cp36-win* *-win32",
enable=frozenset([EnableGroup.PyPy]),
2021-04-30 17:56:34 -04:00
)
2025-05-15 09:06:48 -04:00
assert not build_selector("pp310-manylinux_x86_64")
assert build_selector("pp311-manylinux_x86_64")
assert not build_selector("pp37-manylinux_i686")
assert not build_selector("pp38-manylinux_i686")
2021-02-14 20:44:20 +01:00
assert build_selector("cp36-manylinux_x86_64")
assert build_selector("cp37-manylinux_x86_64")
assert not build_selector("cp36-manylinux_i686")
assert not build_selector("cp37-manylinux_i686")
2025-05-15 09:06:48 -04:00
assert not build_selector("pp39-macosx_10_6_intel")
assert build_selector("pp311-macosx_10_6_intel")
2021-05-03 11:45:43 -04:00
assert build_selector("cp36-macosx_10_6_intel")
assert build_selector("cp37-macosx_10_6_intel")
assert not build_selector("cp36-win32")
assert not build_selector("cp37-win32")
assert not build_selector("cp36-win_amd64")
assert build_selector("cp37-win_amd64")
2026-04-01 10:23:02 -04:00
def test_build_and_skip() -> None:
2021-04-30 17:56:34 -04:00
build_selector = BuildSelector(
2024-11-14 11:39:52 -05:00
build_config="cp36-* cp37-macosx* *-manylinux*",
skip_config="pp37-* cp37-manylinux_i686",
enable=frozenset([EnableGroup.PyPy]),
2021-04-30 17:56:34 -04:00
)
2021-02-14 20:44:20 +01:00
assert not build_selector("pp37-manylinux_x86_64")
assert build_selector("cp36-manylinux_x86_64")
assert build_selector("cp37-manylinux_x86_64")
assert not build_selector("pp37-manylinux_i686")
assert build_selector("cp36-manylinux_i686")
assert not build_selector("cp37-manylinux_i686")
assert not build_selector("pp37-macosx_10_6_intel")
2021-05-03 11:45:43 -04:00
assert build_selector("cp36-macosx_10_6_intel")
assert build_selector("cp37-macosx_10_6_intel")
2021-02-14 20:44:20 +01:00
assert not build_selector("pp37-win32")
2021-05-03 11:45:43 -04:00
assert build_selector("cp36-win32")
assert not build_selector("cp37-win32")
2021-02-14 20:44:20 +01:00
assert not build_selector("pp37-win_amd64")
2021-05-03 11:45:43 -04:00
assert build_selector("cp36-win_amd64")
assert not build_selector("cp37-win_amd64")
2026-04-01 10:23:02 -04:00
def test_build_braces() -> None:
build_selector = BuildSelector(build_config="cp{36,37}*", skip_config="")
2021-02-14 20:44:20 +01:00
assert build_selector("cp36-manylinux_x86_64")
assert build_selector("cp37-manylinux_x86_64")
assert not build_selector("cp38-manylinux_x86_64")
assert not build_selector("cp39-manylinux_x86_64")
2021-01-31 17:14:15 -05:00
2026-04-01 10:23:02 -04:00
def test_build_limited_python() -> None:
2021-04-30 17:56:34 -04:00
build_selector = BuildSelector(
2024-11-14 11:39:52 -05:00
build_config="*",
skip_config="",
requires_python=SpecifierSet(">=3.7"),
enable=frozenset([EnableGroup.PyPy, EnableGroup.PyPyEoL, EnableGroup.GraalPy]),
2021-04-30 17:56:34 -04:00
)
2021-01-31 17:14:15 -05:00
2021-02-14 20:44:20 +01:00
assert not build_selector("cp36-manylinux_x86_64")
assert build_selector("cp37-manylinux_x86_64")
assert build_selector("cp38-manylinux_x86_64")
assert not build_selector("cp36-manylinux_i686")
assert build_selector("cp37-manylinux_i686")
assert build_selector("cp38-manylinux_i686")
assert not build_selector("cp36-win32")
2021-05-03 11:45:43 -04:00
assert build_selector("cp37-win32")
2021-02-14 20:44:20 +01:00
assert build_selector("cp38-win32")
assert build_selector("pp37-win_amd64")
assert build_selector("gp311_242-win_amd64")
2021-01-31 17:14:15 -05:00
2026-04-01 10:23:02 -04:00
def test_build_limited_python_partial() -> None:
2021-04-30 17:56:34 -04:00
build_selector = BuildSelector(
2021-02-14 20:44:20 +01:00
build_config="*", skip_config="", requires_python=SpecifierSet(">=3.6, !=3.7.*")
2021-04-30 17:56:34 -04:00
)
2021-01-31 17:14:15 -05:00
2021-02-14 20:44:20 +01:00
assert build_selector("cp36-manylinux_x86_64")
assert not build_selector("cp37-manylinux_x86_64")
assert build_selector("cp38-manylinux_x86_64")
assert build_selector("cp39-manylinux_x86_64")
2021-01-31 17:14:15 -05:00
2026-04-01 10:23:02 -04:00
def test_build_limited_python_patch() -> None:
2021-04-30 17:56:34 -04:00
build_selector = BuildSelector(
2021-02-14 20:44:20 +01:00
build_config="*", skip_config="", requires_python=SpecifierSet(">=3.6.8")
2021-04-30 17:56:34 -04:00
)
2021-01-31 17:14:15 -05:00
2021-02-14 20:44:20 +01:00
assert build_selector("cp36-manylinux_x86_64")
assert build_selector("cp37-manylinux_x86_64")
2022-06-15 10:12:46 +01:00
2026-04-01 10:23:02 -04:00
def test_build_free_threaded_python() -> None:
build_selector = BuildSelector(build_config="*", skip_config="", enable=frozenset(EnableGroup))
assert build_selector("cp313t-manylinux_x86_64")
2026-04-01 10:23:02 -04:00
def test_testing_selector() -> None:
# This is not a global import to keep pytest from collecting it as a test
test_selector = cibuildwheel.selector.TestSelector(skip_config="cp36-*")
2022-06-15 10:12:46 +01:00
assert not test_selector("cp36-win_amd64")
assert test_selector("cp37-manylinux_x86_64")
assert test_selector("cp311-manylinux_x86_64")