fix(schema): default is fine for pyodide too (#2951)

This commit is contained in:
Henry Schreiner
2026-08-02 07:49:12 -04:00
committed by GitHub
parent dca67ee350
commit ffd2e18240
4 changed files with 185 additions and 52 deletions
+59
View File
@@ -143,6 +143,65 @@ def test_overrides_invalid_inherit_value(validator: validate_pyproject.api.Valid
validator(example)
def test_pyodide_build_frontend(validator: validate_pyproject.api.Validator) -> None:
"""
pyodide-build is accepted anywhere the frontend can be set, as an override
or a global value can apply to pyodide builds only.
"""
example = tomllib.loads(
"""
[tool.cibuildwheel]
build-frontend = "pyodide-build"
[tool.cibuildwheel.pyodide]
build-frontend = { name = "pyodide-build", args = ["--some-arg"] }
[[tool.cibuildwheel.overrides]]
select = "*pyodide*"
build-frontend = "pyodide-build; args: --some-arg"
"""
)
assert validator(example) is not None
@pytest.mark.parametrize("frontend", ['"uv"', '"build; args: --some-arg"', '{ name = "pip" }'])
def test_pyodide_bad_build_frontend(
validator: validate_pyproject.api.Validator, frontend: str
) -> None:
"""
The pyodide table only accepts the pyodide-build frontend.
"""
example = tomllib.loads(
f"""
[tool.cibuildwheel.pyodide]
build-frontend = {frontend}
"""
)
with pytest.raises(validate_pyproject.error_reporting.ValidationError):
validator(example)
@pytest.mark.parametrize("platform", ["linux", "macos", "windows", "ios", "android"])
@pytest.mark.parametrize("frontend", ["pyodide-build", "pyodide-build; args: --some-arg"])
def test_bad_pyodide_build_frontend(
validator: validate_pyproject.api.Validator, platform: str, frontend: str
) -> None:
"""
Only the pyodide table accepts the pyodide-build frontend.
"""
example = tomllib.loads(
f"""
[tool.cibuildwheel.{platform}]
build-frontend = "{frontend}"
"""
)
with pytest.raises(validate_pyproject.error_reporting.ValidationError):
validator(example)
def test_docs_examples(validator: validate_pyproject.api.Validator) -> None:
"""
Parse out all the configuration examples, build valid TOML out of them, and