File: CustomRenderer.py

package info (click to toggle)
plastex 3.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,132 kB
  • sloc: python: 23,341; xml: 18,076; javascript: 7,755; ansic: 46; makefile: 40; sh: 26
file content (85 lines) | stat: -rw-r--r-- 2,450 bytes parent folder | download | duplicates (2)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os, sys
import subprocess
from pathlib import Path

plastex_dir = str(Path(__file__).absolute().parent.parent)

def test_custom_renderer(tmpdir):
    try:
        tmpdir = Path(tmpdir)
    except:
        tmpdir = Path(str(tmpdir))

    (tmpdir / "CustomRenderer").mkdir()
    (tmpdir / "CustomRenderer" / "__init__.py").write_text(r"""
from plasTeX.Renderers import Renderer as BaseRenderer

class Renderer(BaseRenderer):
    def  __init__(self, *args, **kwargs):
        BaseRenderer.__init__(self, *args, **kwargs)
        def render(obj):
            return "Test Renderer"

        self["default-layout"] = render
    """)

    (tmpdir / "test.tex").write_text(r"""
\documentclass{article}
\begin{document}
\end{document}
""")


    ppath = ':'.join([
        os.environ.get('PYTHONPATH', ''),
        str(plastex_dir),
        str(tmpdir)
    ])
    env = os.environ.copy()
    env['PYTHONPATH'] = ppath

    # We check the return code manually instead of setting check=True for more
    # readable error
    ret = subprocess.run(["plastex", "--renderer=CustomRenderer", "test.tex"], cwd=str(tmpdir), check=False)
    assert ret.returncode == 0

    result = (tmpdir / "test" / "index").read_text()
    assert result == "Test Renderer"

def test_plugin_renderer(tmpdir):
    tmpdir = Path(str(tmpdir))
    (tmpdir/'my_plugin'/'Renderers'/'my_renderer').mkdir(parents=True)
    (tmpdir/'my_plugin'/'Renderers'/'my_renderer'/'__init__.py').write_text(
    r"""from plasTeX.Renderers import Renderer as BaseRenderer

class Renderer(BaseRenderer):
    def  __init__(self, *args, **kwargs):
        BaseRenderer.__init__(self, *args, **kwargs)
        def render(obj):
            return "Test Renderer"

        self["default-layout"] = render
    """)

    (tmpdir / "test.tex").write_text(r"""
\documentclass{article}
\begin{document}
\end{document}
""")

    ppath = ':'.join([
        os.environ.get('PYTHONPATH', ''),
        str(plastex_dir),
        str(tmpdir)
    ])
    env = os.environ.copy()
    env['PYTHONPATH'] = ppath
    # We check the return code manually instead of setting check=True for more
    # readable error
    ret = subprocess.run(["plastex", "--plugins=my_plugin",
                          "--renderer=my_renderer", "test.tex"],
                         cwd=str(tmpdir), check=False, env=env)
    assert ret.returncode == 0

    result = (tmpdir/'test'/'index').read_text()
    assert result == "Test Renderer"