[Python-checkins] r65303 - in doctools/branches/0.4.x/tests: test_config.py test_markup.py util.py
benjamin.peterson
python-checkins at python.org
Wed Jul 30 14:35:34 CEST 2008
Author: benjamin.peterson
Date: Wed Jul 30 14:35:34 2008
New Revision: 65303
Log:
add a with_testapp decorator for test functions that passes the TestApp instance in a cleans up after it
Modified:
doctools/branches/0.4.x/tests/test_config.py
doctools/branches/0.4.x/tests/test_markup.py
doctools/branches/0.4.x/tests/util.py
Modified: doctools/branches/0.4.x/tests/test_config.py
==============================================================================
--- doctools/branches/0.4.x/tests/test_config.py (original)
+++ doctools/branches/0.4.x/tests/test_config.py Wed Jul 30 14:35:34 2008
@@ -15,9 +15,9 @@
from sphinx.application import ExtensionError
-def test_core_config():
- overrides = {'master_doc': 'master', 'nonexisting_value': 'True'}
- cfg = TestApp(confoverrides=overrides).config
+ at with_testapp(confoverrides={'master_doc': 'master', 'nonexisting_value': 'True'})
+def test_core_config(app):
+ cfg = app.config
# simple values
assert 'project' in cfg.__dict__
@@ -61,8 +61,8 @@
assert cfg['project'] == cfg.project == 'Sphinx Tests'
-def test_extension_values():
- app = TestApp()
+ at with_testapp()
+def test_extension_values(app):
cfg = app.config
# default value
Modified: doctools/branches/0.4.x/tests/test_markup.py
==============================================================================
--- doctools/branches/0.4.x/tests/test_markup.py (original)
+++ doctools/branches/0.4.x/tests/test_markup.py Wed Jul 30 14:35:34 2008
@@ -18,10 +18,8 @@
from sphinx.htmlwriter import HTMLWriter, SmartyPantsHTMLTranslator
from sphinx.latexwriter import LaTeXWriter, LaTeXTranslator
-app = TestApp()
optparser = frontend.OptionParser(components=(rst.Parser, HTMLWriter, LaTeXWriter))
settings = optparser.get_default_values()
-settings.env = app.builder.env
parser = rst.Parser()
# since we're not resolving the markup afterwards, these nodes may remain
@@ -38,7 +36,9 @@
pass
-def verify(rst, html_expected, latex_expected):
+ at with_testapp()
+def verify(app, rst, html_expected, latex_expected):
+ settings.env = app.builder.env
document = utils.new_document('test data', settings)
parser.parse(rst, document)
for msg in document.traverse(nodes.system_message):
@@ -49,7 +49,7 @@
html_translator = ForgivingHTMLTranslator(app.builder, document)
document.walkabout(html_translator)
html_translated = ''.join(html_translator.fragment).strip()
- assert html_translated == html_expected, 'from ' + rst
+ assert html_translated == html_expected, 'from' + rst
if latex_expected:
latex_translator = ForgivingLaTeXTranslator(document, app.builder)
@@ -79,7 +79,7 @@
# non-interpolation of dashes in option role
verify(':option:`--with-option`',
- '<p><em>--with-option</em></p>',
+ '<p><em class="xref">--with-option</em></p>',
r'\emph{\texttt{--with-option}}')
# verify smarty-pants quotes
Modified: doctools/branches/0.4.x/tests/util.py
==============================================================================
--- doctools/branches/0.4.x/tests/util.py (original)
+++ doctools/branches/0.4.x/tests/util.py Wed Jul 30 14:35:34 2008
@@ -8,18 +8,24 @@
"""
import sys
+import os
import StringIO
import tempfile
+import shutil
+
+from functools import wraps
from sphinx import application, builder
from path import path
+from nose import tools
+
__all__ = [
'test_root',
'raises', 'raises_msg',
- 'ErrorOutput', 'TestApp',
+ 'ErrorOutput', 'TestApp', 'with_testapp',
'path', 'with_tempdir', 'write_file',
]
@@ -90,6 +96,7 @@
confdir = srcdir
if outdir is None:
outdir = srcdir.joinpath('_build', buildername)
+ os.makedirs(outdir)
if doctreedir is None:
doctreedir = srcdir.joinpath(srcdir, '_build', 'doctrees')
if confoverrides is None:
@@ -105,6 +112,28 @@
buildername, confoverrides, status, warning,
freshenv)
+ def cleanup(self):
+ try:
+ shutil.rmtree(self.outdir)
+ except IOError: pass
+
+
+def with_testapp(*args, **kwargs):
+ """
+ Make a TestApp with args and kwargs, pass it to the test and clean up
+ properly.
+ """
+ def generator(func):
+ @wraps(func)
+ def deco(*args2, **kwargs2):
+ app = TestApp(*args, **kwargs)
+ try:
+ func(app, *args2, **kwargs2)
+ finally:
+ app.cleanup()
+ return deco
+ return generator
+
def with_tempdir(func):
def new_func():
More information about the Python-checkins
mailing list