fix(schema): default is fine for pyodide too (#2951)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user