[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