From c7b0f33707e1e365ad095f0d2759138b42dafbf4 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Sat, 26 Apr 2025 01:42:30 -0400 Subject: [PATCH] tests: add missing test files Signed-off-by: Henry Schreiner --- tests/test_dynamic_metadata_unit.py | 66 +++++++++++++++++++++++++++++ tests/test_settings_docs.py | 38 +++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 tests/test_dynamic_metadata_unit.py create mode 100644 tests/test_settings_docs.py diff --git a/tests/test_dynamic_metadata_unit.py b/tests/test_dynamic_metadata_unit.py new file mode 100644 index 000000000..8d6ea364c --- /dev/null +++ b/tests/test_dynamic_metadata_unit.py @@ -0,0 +1,66 @@ +from scikit_build_core.builder._load_provider import process_dynamic_metadata + + +def test_template_basic() -> None: + pyproject = process_dynamic_metadata( + { + "name": "test", + "version": "0.1.0", + "dynamic": ["requires-python"], + }, + { + "requires-python": { + "provider": "scikit_build_core.metadata.template", + "result": ">={project[version]}", + }, + }, + ) + + assert pyproject["requires-python"] == ">=0.1.0" + + +def test_template_needs() -> None: + # These are intentionally out of order to test the order of processing + pyproject = process_dynamic_metadata( + { + "name": "test", + "version": "0.1.0", + "dynamic": ["requires-python", "license", "readme"], + }, + { + "license": { + "provider": "scikit_build_core.metadata.template", + "result": "{project[requires-python]}", + }, + "readme": { + "provider": "scikit_build_core.metadata.template", + "result": {"file": "{project[license]}"}, + }, + "requires-python": { + "provider": "scikit_build_core.metadata.template", + "result": ">={project[version]}", + }, + }, + ) + + assert pyproject["requires-python"] == ">=0.1.0" + + +def test_regex() -> None: + pyproject = process_dynamic_metadata( + { + "name": "test", + "version": "0.1.0", + "dynamic": ["requires-python"], + }, + { + "requires-python": { + "provider": "scikit_build_core.metadata.regex", + "input": "pyproject.toml", + "regex": r"name = \"(?P.+)\"", + "result": ">={name}", + }, + }, + ) + + assert pyproject["requires-python"] == ">=scikit_build_core" diff --git a/tests/test_settings_docs.py b/tests/test_settings_docs.py new file mode 100644 index 000000000..bc2a7439c --- /dev/null +++ b/tests/test_settings_docs.py @@ -0,0 +1,38 @@ +from __future__ import annotations + +from scikit_build_core.settings.documentation import DCDoc, mk_docs +from scikit_build_core.settings.skbuild_docs import mk_skbuild_docs +from scikit_build_core.settings.skbuild_model import ScikitBuildSettings + + +def test_skbuild_docs() -> None: + docs = mk_skbuild_docs() + assert ( + "A table of defines to pass to CMake when configuring the project. Additive." + in docs + ) + assert "DEPRECATED in 0.10, use build.verbose instead." in docs + assert "fail = false" in docs + + +def test_mk_docs() -> None: + docs = set(mk_docs(ScikitBuildSettings)) + + assert ( + DCDoc( + name="cmake.minimum-version", + default='""', + docs="DEPRECATED in 0.8; use version instead.", + deprecated=True, + ) + in docs + ) + assert ( + DCDoc( + name="install.strip", + default="true", + docs="Whether to strip the binaries. True for release builds on scikit-build-core 0.5+ (0.5-0.10.5 also incorrectly set this for debug builds).", + deprecated=False, + ) + in docs + )