2022-07-14 13:36:57 +02:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
2021-01-31 17:14:15 -05:00
|
|
|
from packaging.specifiers import SpecifierSet
|
|
|
|
|
|
2025-01-27 20:35:56 +01:00
|
|
|
from cibuildwheel.selector import BuildSelector, EnableGroup
|
2018-09-16 22:49:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_build():
|
2024-11-14 11:39:52 -05:00
|
|
|
build_selector = BuildSelector(
|
2025-01-21 18:53:01 +01:00
|
|
|
build_config="cp3*-* *-manylinux*", skip_config="", enable=frozenset([EnableGroup.PyPy])
|
2024-11-14 11:39:52 -05:00
|
|
|
)
|
2018-09-16 22:49:38 +02: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")
|
2022-08-11 09:21:34 +02:00
|
|
|
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")
|
2021-02-14 20:44:20 +01:00
|
|
|
assert build_selector("pp36-manylinux_x86_64")
|
|
|
|
|
assert build_selector("pp37-manylinux_x86_64")
|
|
|
|
|
assert build_selector("cp36-manylinux_i686")
|
|
|
|
|
assert build_selector("cp37-manylinux_i686")
|
2021-05-29 00:26:55 +02:00
|
|
|
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")
|
|
|
|
|
assert not build_selector("pp36-macosx_intel")
|
|
|
|
|
assert not build_selector("pp37-macosx_intel")
|
2021-05-03 11:45:43 -04:00
|
|
|
assert build_selector("cp36-win32")
|
|
|
|
|
assert build_selector("cp37-win32")
|
2021-02-14 20:44:20 +01:00
|
|
|
assert not build_selector("pp36-win32")
|
|
|
|
|
assert not build_selector("pp37-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")
|
2022-08-11 09:21:34 +02:00
|
|
|
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")
|
2021-02-14 20:44:20 +01:00
|
|
|
assert not build_selector("pp36-win_amd64")
|
|
|
|
|
assert not build_selector("pp37-win_amd64")
|
2018-09-16 22:49:38 +02:00
|
|
|
|
|
|
|
|
|
2021-05-29 00:26:55 +02:00
|
|
|
def test_build_filter_pre():
|
|
|
|
|
build_selector = BuildSelector(
|
|
|
|
|
build_config="cp3*-* *-manylinux*",
|
|
|
|
|
skip_config="",
|
2025-01-21 18:53:01 +01:00
|
|
|
enable=frozenset([EnableGroup.CPythonPrerelease, EnableGroup.PyPy]),
|
2021-05-29 00:26:55 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
assert build_selector("cp37-manylinux_x86_64")
|
2024-05-12 02:26:18 +02:00
|
|
|
assert build_selector("cp313-manylinux_x86_64")
|
2021-05-29 00:26:55 +02:00
|
|
|
assert build_selector("cp37-win_amd64")
|
2024-05-12 02:26:18 +02:00
|
|
|
assert build_selector("cp313-win_amd64")
|
2024-05-19 13:53:37 +02:00
|
|
|
assert not build_selector("cp313t-manylinux_x86_64")
|
2021-05-29 00:26:55 +02:00
|
|
|
|
|
|
|
|
|
2018-09-16 22:49:38 +02:00
|
|
|
def test_skip():
|
2021-04-30 17:56:34 -04:00
|
|
|
build_selector = BuildSelector(
|
2024-11-14 11:39:52 -05:00
|
|
|
build_config="*",
|
|
|
|
|
skip_config="pp36-* cp3?-manylinux_i686 cp36-win* *-win32",
|
2025-01-21 18:53:01 +01:00
|
|
|
enable=frozenset([EnableGroup.PyPy]),
|
2021-04-30 17:56:34 -04:00
|
|
|
)
|
2018-09-16 22:49:38 +02:00
|
|
|
|
2021-02-14 20:44:20 +01:00
|
|
|
assert not build_selector("pp36-manylinux_x86_64")
|
|
|
|
|
assert build_selector("pp37-manylinux_x86_64")
|
2021-11-11 08:40:15 -05:00
|
|
|
assert build_selector("pp38-manylinux_x86_64")
|
|
|
|
|
assert build_selector("pp37-manylinux_i686")
|
|
|
|
|
assert 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")
|
|
|
|
|
assert not build_selector("pp36-macosx_10_6_intel")
|
|
|
|
|
assert 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")
|
|
|
|
|
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")
|
2018-09-16 22:49:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_and_skip():
|
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",
|
2025-01-21 18:53:01 +01:00
|
|
|
enable=frozenset([EnableGroup.PyPy]),
|
2021-04-30 17:56:34 -04:00
|
|
|
)
|
2018-09-16 22:49:38 +02: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")
|
2021-01-15 15:25:22 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_braces():
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_limited_python():
|
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"),
|
2025-01-21 18:53:01 +01:00
|
|
|
enable=frozenset([EnableGroup.PyPy]),
|
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")
|
2021-05-12 14:42:09 +00:00
|
|
|
assert build_selector("pp37-win_amd64")
|
2021-01-31 17:14:15 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_limited_python_partial():
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_limited_python_patch():
|
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
|
|
|
|
|
|
|
|
|
2024-05-19 13:53:37 +02:00
|
|
|
def test_build_free_threaded_python():
|
2025-01-21 18:53:01 +01:00
|
|
|
build_selector = BuildSelector(build_config="*", skip_config="", enable=frozenset(EnableGroup))
|
2024-05-19 13:53:37 +02:00
|
|
|
|
|
|
|
|
assert build_selector("cp313t-manylinux_x86_64")
|
|
|
|
|
|
|
|
|
|
|
2022-06-15 10:12:46 +01:00
|
|
|
def test_testing_selector():
|
|
|
|
|
# local import to avoid pytest trying to collect this as a test class!
|
2025-01-27 20:35:56 +01:00
|
|
|
from cibuildwheel.selector import TestSelector
|
2022-06-15 10:12:46 +01:00
|
|
|
|
|
|
|
|
test_selector = TestSelector(skip_config="cp36-*")
|
|
|
|
|
|
|
|
|
|
assert not test_selector("cp36-win_amd64")
|
|
|
|
|
assert test_selector("cp37-manylinux_x86_64")
|
|
|
|
|
assert test_selector("cp311-manylinux_x86_64")
|