68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
import py
|
|
try:
|
|
import docutils
|
|
except ImportError:
|
|
py.test.skip("docutils not present")
|
|
|
|
from py.__.rest import directive
|
|
from py.__.misc import rest
|
|
from py.__.rest.latex import process_rest_file
|
|
from py.__.rest.testing.setup import getdata
|
|
|
|
def setup_module(mod):
|
|
mod.datadir = getdata()
|
|
mod.testdir = py.test.ensuretemp("rest")
|
|
|
|
class TestGraphviz(object):
|
|
def _graphviz_html(self):
|
|
if not py.path.local.sysfind("dot"):
|
|
py.test.skip("graphviz needed")
|
|
directive.set_backend_and_register_directives("html")
|
|
if not py.path.local.sysfind("svn"):
|
|
py.test.skip("svn needed")
|
|
txt = datadir.join("graphviz.txt")
|
|
html = txt.new(ext="html")
|
|
png = datadir.join("example1.png")
|
|
rest.process(txt)
|
|
assert html.check()
|
|
assert png.check()
|
|
html_content = html.read()
|
|
assert png.basename in html_content
|
|
html.remove()
|
|
png.remove()
|
|
|
|
def _graphviz_pdf(self):
|
|
for exe in 'dot latex epstopdf ps2eps'.split():
|
|
if not py.path.local.sysfind(exe):
|
|
py.test.skip("%r needed" %(exe,))
|
|
|
|
directive.set_backend_and_register_directives("latex")
|
|
txt = py.path.local(datadir.join("graphviz.txt"))
|
|
pdf = txt.new(ext="pdf")
|
|
dotpdf = datadir.join("example1.pdf")
|
|
process_rest_file(txt)
|
|
assert pdf.check()
|
|
assert dotpdf.check()
|
|
pdf.remove()
|
|
dotpdf.remove()
|
|
|
|
def test_graphviz(self):
|
|
self._graphviz_html()
|
|
self._graphviz_pdf()
|
|
|
|
def test_own_links():
|
|
def callback(name, text):
|
|
assert name == "foo"
|
|
return "bar xyz", "http://codespeak.net/noclue"
|
|
directive.register_linkrole("foo", callback)
|
|
txt = testdir.join("link-role.txt")
|
|
txt.write("""
|
|
:foo:`whatever`
|
|
""")
|
|
html = txt.new(ext="html")
|
|
rest.process(txt)
|
|
assert html.check()
|
|
htmlcontent = html.read()
|
|
assert "http://codespeak.net/noclue" in htmlcontent
|
|
assert "bar xyz" in htmlcontent
|