File: test_sphinx.py

package info (click to toggle)
sphinx-panels 0.6.0-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 944 kB
  • sloc: python: 1,054; xml: 60; makefile: 23; sh: 16
file content (48 lines) | stat: -rw-r--r-- 1,559 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from pathlib import Path
import shutil

import docutils
import pytest
import sphinx
from docutils.nodes import Element

from sphinx_panels.tabs import TabbedHtmlTransform


@pytest.fixture()
def sphinx_app_factory(make_app, tmp_path: Path, monkeypatch):
    monkeypatch.setattr(TabbedHtmlTransform, "get_unique_key", lambda self: "mock-uuid")

    def _func(src_folder, **kwargs):
        shutil.copytree(
            (Path(__file__).parent / "sources" / src_folder), tmp_path / src_folder
        )
        srcdir = (tmp_path / src_folder).absolute()
        if sphinx.version_info < (7, 2):
            from sphinx.testing.path import path
            srcdir = path(str(srcdir))
        app = make_app(srcdir=srcdir, **kwargs)
        return app

    yield _func


@pytest.mark.parametrize("folder", ["tabbed_basic", "dropdown_basic"])
def test_sources(sphinx_app_factory, file_regression, folder):
    app = sphinx_app_factory(folder)
    app.build()
    assert app._warning.getvalue() == ""
    doctree = app.env.get_and_resolve_doctree("index", app.builder)
    doctree["source"] = "source"
    if sphinx.version_info < (7, 1):
        doctree["translation_progress"] = "{'total': 0, 'translated': 0}"
    if docutils.__version_info__ < (0, 22):
        for node in doctree.findall(Element):
            for name, value in node.attlist():
                if isinstance(value, bool):
                    node.attributes[name] = str(int(value))
    file_regression.check(
        doctree.pformat(),
        encoding="utf8",
        extension=".xml",
    )