[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

AltStyle によって変換されたページ (->オリジナル) /