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"
|