mirror of
https://github.com/zensical/zensical.git
synced 2026-09-24 07:15:34 +00:00
fix: relax mike settings validation (#932)
Signed-off-by: Timothée Mazzucotelli <dev@pawamoy.fr>
This commit is contained in:
+35
@@ -128,6 +128,36 @@ def test_normalizes_mike_defaults() -> None:
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize("version_selector", [False, True])
|
||||
def test_preserves_mike_version_selector(version_selector: bool) -> None:
|
||||
plugins = _convert_plugins({"mike": {"version_selector": version_selector}})
|
||||
|
||||
assert plugins["mike"]["config"]["version_selector"] is version_selector
|
||||
|
||||
|
||||
def test_silently_discards_unsupported_mike_options(
|
||||
capsys: pytest.CaptureFixture[str],
|
||||
) -> None:
|
||||
plugins = _convert_plugins(
|
||||
{
|
||||
"mike": {
|
||||
"version_selector": False,
|
||||
"css_dir": "assets/css",
|
||||
"javascript_dir": "assets/js",
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
assert plugins["mike"]["config"] == {
|
||||
"alias_type": "symlink",
|
||||
"redirect_template": None,
|
||||
"deploy_prefix": "",
|
||||
"canonical_version": None,
|
||||
"version_selector": False,
|
||||
}
|
||||
assert capsys.readouterr().err == ""
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", [*PYTHON_PLUGINS, "tags", "external"])
|
||||
def test_plugin_configuration_must_be_a_mapping(name: str) -> None:
|
||||
with pytest.raises(
|
||||
@@ -328,6 +358,11 @@ def test_silently_discards_unsupported_autorefs_options(
|
||||
),
|
||||
("offline", {"enabled": "yes"}, "enabled must be a boolean"),
|
||||
("mike", {"canonical_version": 42}, "must be a string or null"),
|
||||
(
|
||||
"mike",
|
||||
{"version_selector": "false"},
|
||||
"version_selector must be a boolean",
|
||||
),
|
||||
("autorefs", {"enabled": "yes"}, "enabled must be a boolean"),
|
||||
("markdown-exec", {"ansi": "sometimes"}, "ansi must be"),
|
||||
(
|
||||
|
||||
@@ -1675,12 +1675,18 @@ def _convert_plugins(value: Any, config: dict) -> dict:
|
||||
"deploy_prefix": "",
|
||||
}
|
||||
nullable_strings = ("redirect_template", "canonical_version")
|
||||
# Zensical bundles its own version selector assets, so accept and
|
||||
# discard Mike's asset directory options for compatibility.
|
||||
unsupported = {"css_dir", "javascript_dir"}
|
||||
_reject_unknown_options(
|
||||
"mike",
|
||||
mike,
|
||||
{"enabled", *string_defaults, *nullable_strings},
|
||||
{"enabled", "version_selector", *string_defaults, *nullable_strings}
|
||||
| unsupported,
|
||||
)
|
||||
_validate_boolean_options("mike", mike, ("enabled",))
|
||||
for name in sorted(unsupported & mike.keys()):
|
||||
mike.pop(name)
|
||||
_validate_boolean_options("mike", mike, ("enabled", "version_selector"))
|
||||
for name, default in string_defaults.items():
|
||||
set_default(mike, name, default)
|
||||
_validate_string_options("mike", mike, string_defaults)
|
||||
|
||||
Reference in New Issue
Block a user