Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
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'])
Exemplo n.º 4
0
    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, [])
Exemplo n.º 5
0
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
Exemplo n.º 6
0
    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'])