def test_empty_nav(self): conf = config.Config(schema=config.DEFAULT_SCHEMA) conf.load_dict({ 'site_name': 'Example', 'config_file_path': os.path.join(os.path.abspath('.'), 'mkdocutils.yml') }) conf.validate() self.assertEqual(conf['nav'], None)
def test_missing_site_name(self): c = config.Config(schema=config.DEFAULT_SCHEMA) c.load_dict({}) errors, warnings = c.validate() self.assertEqual(len(errors), 1) self.assertEqual(errors[0][0], 'site_name') self.assertEqual(str(errors[0][1]), 'Required configuration not provided.') self.assertEqual(len(warnings), 0)
def test_copy_pages_to_nav(self): # TODO: remove this when pages config setting is fully deprecated. conf = config.Config(schema=config.DEFAULT_SCHEMA) conf.load_dict({ 'site_name': 'Example', 'pages': ['index.md', 'about.md'], 'config_file_path': os.path.join(os.path.abspath('.'), 'mkdocutils.yml') }) conf.validate() self.assertEqual(conf['nav'], ['index.md', 'about.md'])
def test_doc_dir_in_site_dir(self): j = os.path.join test_configs = ( { 'docs_dir': j('site', 'docs'), 'site_dir': 'site' }, { 'docs_dir': 'docs', 'site_dir': '.' }, { 'docs_dir': '.', 'site_dir': '.' }, { 'docs_dir': 'docs', 'site_dir': '' }, { 'docs_dir': '', 'site_dir': '' }, { 'docs_dir': 'docs', 'site_dir': 'docs' }, ) conf = {'config_file_path': j(os.path.abspath('..'), 'mkdocutils.yml')} for test_config in test_configs: patch = conf.copy() patch.update(test_config) # Same as the default schema, but don't verify the docs_dir exists. c = config.Config(schema=(('docs_dir', config_options.Dir(default='docs')), ('site_dir', config_options.SiteDir(default='site')), ('config_file_path', config_options.Type(str)))) c.load_dict(patch) errors, warnings = c.validate() self.assertEqual(len(errors), 1) self.assertEqual(warnings, [])
def load_config(**cfg): """ Helper to build a simple config for testing. """ path_base = os.path.join( os.path.abspath(os.path.dirname(__file__)), 'integration', 'minimal', ) cfg = cfg or {} if 'site_name' not in cfg: cfg['site_name'] = 'Example' if 'config_file_path' not in cfg: cfg['config_file_path'] = os.path.join(path_base, 'mkdocutils.yml') if 'docs_dir' not in cfg: # Point to an actual dir to avoid a 'does not exist' error on validation. cfg['docs_dir'] = os.path.join(path_base, 'docs') conf = config.Config( schema=config.DEFAULT_SCHEMA, config_file_path=cfg['config_file_path'], ) conf.load_dict(cfg) errors_warnings = conf.validate() assert (errors_warnings == ([], [])), errors_warnings return conf
def test_theme(self): with TemporaryDirectory() as mytheme, TemporaryDirectory() as custom: configs = [ dict(), # default theme { "theme": "readthedocs" }, # builtin theme { "theme": { 'name': 'readthedocs' } }, # builtin as complex { "theme": { 'name': None, 'custom_dir': mytheme } }, # custom only as complex { "theme": { 'name': 'readthedocs', 'custom_dir': custom } }, # builtin and custom as complex { # user defined variables 'theme': { 'name': 'mkdocs', 'static_templates': ['foo.html'], 'show_sidebar': False, 'some_var': 'bar' } } ] mkdocs_dir = os.path.abspath(os.path.dirname(mkdocutils.__file__)) mkdocs_templates_dir = os.path.join(mkdocs_dir, 'templates') theme_dir = os.path.abspath(os.path.join(mkdocs_dir, 'themes')) results = ({ 'dirs': [os.path.join(theme_dir, 'mkdocs'), mkdocs_templates_dir], 'static_templates': ['404.html', 'sitemap.xml'], 'vars': { 'include_search_page': False, 'search_index_only': False, 'highlightjs': True, 'hljs_style': 'github', 'hljs_languages': [], 'navigation_depth': 2, 'nav_style': 'primary', 'shortcuts': { 'help': 191, 'next': 78, 'previous': 80, 'search': 83 } } }, { 'dirs': [os.path.join(theme_dir, 'readthedocs'), mkdocs_templates_dir], 'static_templates': ['404.html', 'sitemap.xml'], 'vars': { 'include_search_page': True, 'search_index_only': False, 'highlightjs': True, 'hljs_languages': [], 'include_homepage_in_sidebar': True, 'prev_next_buttons_location': 'bottom', 'navigation_depth': 4, 'sticky_navigation': True, 'titles_only': False, 'collapse_navigation': True } }, { 'dirs': [os.path.join(theme_dir, 'readthedocs'), mkdocs_templates_dir], 'static_templates': ['404.html', 'sitemap.xml'], 'vars': { 'include_search_page': True, 'search_index_only': False, 'highlightjs': True, 'hljs_languages': [], 'include_homepage_in_sidebar': True, 'prev_next_buttons_location': 'bottom', 'navigation_depth': 4, 'sticky_navigation': True, 'titles_only': False, 'collapse_navigation': True } }, { 'dirs': [mytheme, mkdocs_templates_dir], 'static_templates': ['sitemap.xml'], 'vars': {} }, { 'dirs': [ custom, os.path.join(theme_dir, 'readthedocs'), mkdocs_templates_dir ], 'static_templates': ['404.html', 'sitemap.xml'], 'vars': { 'include_search_page': True, 'search_index_only': False, 'highlightjs': True, 'hljs_languages': [], 'include_homepage_in_sidebar': True, 'prev_next_buttons_location': 'bottom', 'navigation_depth': 4, 'sticky_navigation': True, 'titles_only': False, 'collapse_navigation': True } }, { 'dirs': [os.path.join(theme_dir, 'mkdocs'), mkdocs_templates_dir], 'static_templates': ['404.html', 'sitemap.xml', 'foo.html'], 'vars': { 'show_sidebar': False, 'some_var': 'bar', 'include_search_page': False, 'search_index_only': False, 'highlightjs': True, 'hljs_style': 'github', 'hljs_languages': [], 'navigation_depth': 2, 'nav_style': 'primary', 'shortcuts': { 'help': 191, 'next': 78, 'previous': 80, 'search': 83 } } }) for config_contents, result in zip(configs, results): c = config.Config(schema=(('theme', config_options.Theme( default='mkdocs')), )) c.load_dict(config_contents) errors, warnings = c.validate() self.assertEqual(len(errors), 0) self.assertEqual(c['theme'].dirs, result['dirs']) self.assertEqual(c['theme'].static_templates, set(result['static_templates'])) self.assertEqual({k: c['theme'][k] for k in iter(c['theme'])}, result['vars'])