Coverage for tests/test_plugin.py: 100.00%
37 statements
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-12 18:59 +0200
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-12 18:59 +0200
1"""Tests for the mkdocstrings plugin."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
7from mkdocs.commands.build import build
8from mkdocs.config import load_config
10from mkdocstrings.plugin import MkdocstringsPlugin
12if TYPE_CHECKING:
13 from pathlib import Path
16def test_disabling_plugin(tmp_path: Path) -> None:
17 """Test disabling plugin."""
18 docs_dir = tmp_path / "docs"
19 site_dir = tmp_path / "site"
20 docs_dir.mkdir()
21 site_dir.mkdir()
22 docs_dir.joinpath("index.md").write_text("::: mkdocstrings")
24 mkdocs_config = load_config()
25 mkdocs_config["docs_dir"] = str(docs_dir)
26 mkdocs_config["site_dir"] = str(site_dir)
27 mkdocs_config["plugins"]["mkdocstrings"].config["enabled"] = False
28 mkdocs_config["plugins"].run_event("startup", command="build", dirty=False)
29 try:
30 build(mkdocs_config)
31 finally:
32 mkdocs_config["plugins"].run_event("shutdown")
34 # make sure the instruction was not processed
35 assert "::: mkdocstrings" in site_dir.joinpath("index.html").read_text()
38def test_plugin_default_config(tmp_path: Path) -> None:
39 """Test default config options are set for Plugin."""
40 config_file_path = tmp_path / "mkdocs.yml"
41 plugin = MkdocstringsPlugin()
42 errors, warnings = plugin.load_config({}, config_file_path=str(config_file_path))
43 assert errors == []
44 assert warnings == []
45 assert plugin.config == {
46 "handlers": {},
47 "default_handler": "python",
48 "custom_templates": None,
49 "enable_inventory": None,
50 "enabled": True,
51 }
54def test_plugin_config_custom_templates(tmp_path: Path) -> None:
55 """Test custom_templates option is relative to config file."""
56 config_file_path = tmp_path / "mkdocs.yml"
57 options = {"custom_templates": "docs/templates"}
58 template_dir = tmp_path / options["custom_templates"]
59 # Path must exist or config validation will fail.
60 template_dir.mkdir(parents=True)
61 plugin = MkdocstringsPlugin()
62 errors, warnings = plugin.load_config(options, config_file_path=str(config_file_path))
63 assert errors == []
64 assert warnings == []
65 assert plugin.config == {
66 "handlers": {},
67 "default_handler": "python",
68 "custom_templates": str(template_dir),
69 "enable_inventory": None,
70 "enabled": True,
71 }