Merge pull request #3199 from spotify/mkdocs-config-override

This commit is contained in:
Himanshu Mishra
2020-11-02 17:45:41 +01:00
committed by GitHub
2 changed files with 58 additions and 5 deletions
@@ -30,6 +30,10 @@ class TechDocsCore(BasePlugin):
'{\n "site_name": "{{ config.site_name }}",\n "site_description": "{{ config.site_description }}"\n}'
)
mdx_configs_override = {}
if "mdx_configs" in config:
mdx_configs_override = config["mdx_configs"].copy()
# Theme
config["theme"] = Theme(
name="material", static_templates=["techdocs_metadata.json",],
@@ -44,15 +48,16 @@ class TechDocsCore(BasePlugin):
monorepo_plugin = MonorepoPlugin()
monorepo_plugin.load_config({})
config["plugins"]["search"] = search_plugin
config["plugins"]["monorepo"] = monorepo_plugin
search_plugin = SearchPlugin()
search_plugin.load_config({})
config["plugins"]["search"] = search_plugin
# Markdown Extensions
if "markdown_extensions" not in config:
config["markdown_extensions"] = []
if "mdx_configs" not in config:
config["mdx_configs"] = {}
config["markdown_extensions"].append("admonition")
config["markdown_extensions"].append("toc")
config["mdx_configs"]["toc"] = {
@@ -90,4 +95,11 @@ class TechDocsCore(BasePlugin):
config["markdown_extensions"].append("markdown_inline_graphviz")
config["markdown_extensions"].append("plantuml_markdown")
# merge config supplied by user in the mkdocs.yml
for key in mdx_configs_override:
if key in config["mdx_configs"]:
default_config = config["mdx_configs"][key]
override_config = mdx_configs_override[key]
default_config.update(override_config)
return config
@@ -0,0 +1,41 @@
import unittest
import mkdocs.config as config
import mkdocs.plugins as plugins
from .core import TechDocsCore
class DummyTechDocsCorePlugin(plugins.BasePlugin):
pass
class TestTechDocsCoreConfig(unittest.TestCase):
def setUp(self):
self.techdocscore = TechDocsCore()
self.plugin_collection = plugins.PluginCollection()
plugin = DummyTechDocsCorePlugin()
self.plugin_collection["techdocs-core"] = plugin
self.mkdocs_yaml_config = {"plugins": self.plugin_collection}
def test_removes_techdocs_core_plugin_from_config(self):
final_config = self.techdocscore.on_config(self.mkdocs_yaml_config)
self.assertTrue("techdocs-core" not in final_config["plugins"])
def test_merge_default_config_and_user_config(self):
self.mkdocs_yaml_config["markdown_extension"] = []
self.mkdocs_yaml_config["mdx_configs"] = {}
self.mkdocs_yaml_config["markdown_extension"].append(["toc"])
self.mkdocs_yaml_config["mdx_configs"]["toc"] = {"toc_depth": 3}
final_config = self.techdocscore.on_config(self.mkdocs_yaml_config)
self.assertTrue("toc" in final_config["mdx_configs"])
self.assertTrue("permalink" in final_config["mdx_configs"]["toc"])
self.assertTrue("toc_depth" in final_config["mdx_configs"]["toc"])
def test_override_default_config_with_user_config(self):
self.mkdocs_yaml_config["markdown_extension"] = []
self.mkdocs_yaml_config["mdx_configs"] = {}
self.mkdocs_yaml_config["markdown_extension"].append(["toc"])
self.mkdocs_yaml_config["mdx_configs"]["toc"] = {"permalink": False}
final_config = self.techdocscore.on_config(self.mkdocs_yaml_config)
self.assertTrue("toc" in final_config["mdx_configs"])
self.assertTrue("permalink" in final_config["mdx_configs"]["toc"])
self.assertFalse(final_config["mdx_configs"]["toc"]["permalink"])