feat: CIBW_TEST_SKIP (#537)

* feat: CIBW_TEST_SKIP

* refactor: adjust a bit and add docs

* fix: typo in name

* docs: Update docs/options.md

Co-authored-by: Joe Rickerby <joerick@mac.com>

* docs: add README line from markdown

Co-authored-by: Joe Rickerby <joerick@mac.com>
This commit is contained in:
Henry Schreiner
2021-01-20 21:22:48 -05:00
committed by GitHub
co-authored by Joe Rickerby
parent 6d92dbc555
commit fba65a6008
7 changed files with 40 additions and 8 deletions
+5 -1
View File
@@ -18,6 +18,7 @@ from cibuildwheel.util import (
BuildOptions,
BuildSelector,
DependencyConstraints,
TestSelector,
Unbuffered,
detect_ci_provider,
resources_dir,
@@ -140,6 +141,7 @@ def main() -> None:
assert_never(platform)
build_config, skip_config = os.environ.get('CIBW_BUILD', '*'), os.environ.get('CIBW_SKIP', '')
test_skip = os.environ.get('CIBW_TEST_SKIP', '')
environment_config = get_option_from_environment('CIBW_ENVIRONMENT', platform=platform, default='')
before_all = get_option_from_environment('CIBW_BEFORE_ALL', platform=platform, default='')
before_build = get_option_from_environment('CIBW_BEFORE_BUILD', platform=platform)
@@ -151,7 +153,8 @@ def main() -> None:
test_extras = get_option_from_environment('CIBW_TEST_EXTRAS', platform=platform, default='')
build_verbosity_str = get_option_from_environment('CIBW_BUILD_VERBOSITY', platform=platform, default='')
build_selector = BuildSelector(build_config, skip_config)
build_selector = BuildSelector(build_config=build_config, skip_config=skip_config)
test_selector = TestSelector(skip_config=test_skip)
try:
environment = parse_environment(environment_config)
@@ -236,6 +239,7 @@ def main() -> None:
before_all=before_all,
build_verbosity=build_verbosity,
build_selector=build_selector,
test_selector=test_selector,
repair_command=repair_command,
environment=environment,
dependency_constraints=dependency_constraints,
+1 -1
View File
@@ -183,7 +183,7 @@ def build(options: BuildOptions) -> None:
repaired_wheels = docker.glob(repaired_wheel_dir, '*.whl')
if options.test_command:
if options.test_command and options.test_selector(config.identifier):
log.step('Testing wheel...')
# set up a virtual environment to install and test from, to make sure
+1 -1
View File
@@ -252,7 +252,7 @@ def build(options: BuildOptions) -> None:
repaired_wheel = next(repaired_wheel_dir.glob('*.whl'))
if options.test_command:
if options.test_command and options.test_selector(config.identifier):
log.step('Testing wheel...')
# set up a virtual environment to install and test from, to make sure
# there are no dependencies that were pulled in at build time.
+19 -4
View File
@@ -57,8 +57,13 @@ def read_python_configs(config: PlatformName) -> List[Dict[str, str]]:
return results
class BuildSelector:
def __init__(self, build_config: str, skip_config: str):
class IdentifierSelector:
"""
This class holds a set of build/skip patterns. You call an instance with a
build identifier, and it returns True if that identifier should be
included.
"""
def __init__(self, *, build_config: str, skip_config: str):
self.build_patterns = build_config.split()
self.skip_patterns = skip_config.split()
@@ -72,9 +77,18 @@ class BuildSelector:
def __repr__(self) -> str:
if not self.skip_patterns:
return f'BuildSelector({" ".join(self.build_patterns)!r})'
return f'{self.__class__.__name__}({" ".join(self.build_patterns)!r})'
else:
return f'BuildSelector({" ".join(self.build_patterns)!r} - {" ".join(self.skip_patterns)!r})'
return f'{self.__class__.__name__}({" ".join(self.build_patterns)!r} - {" ".join(self.skip_patterns)!r})'
class BuildSelector(IdentifierSelector):
pass
class TestSelector(IdentifierSelector):
def __init__(self, *, skip_config: str):
super().__init__(build_config="*", skip_config=skip_config)
# Taken from https://stackoverflow.com/a/107717
@@ -217,6 +231,7 @@ class BuildOptions(NamedTuple):
manylinux_images: Optional[Dict[str, str]]
dependency_constraints: Optional[DependencyConstraints]
test_command: Optional[str]
test_selector: TestSelector
before_test: Optional[str]
test_requires: List[str]
test_extras: str
+1 -1
View File
@@ -277,7 +277,7 @@ def build(options: BuildOptions) -> None:
repaired_wheel = next(repaired_wheel_dir.glob('*.whl'))
if options.test_command:
if options.test_command and options.test_selector(config.identifier):
log.step('Testing wheel...')
# set up a virtual environment to install and test from, to make sure
# there are no dependencies that were pulled in at build time.