summaryrefslogtreecommitdiff
path: root/tests/test_docutilsconf.py
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2014-09-21 17:17:02 +0200
committerGeorg Brandl <georg@python.org>2014-09-21 17:17:02 +0200
commitd47a7587f9813f2366e2077be051116291bf930e (patch)
tree08d92669490358b284d2edd9ba4d61b64c52042a /tests/test_docutilsconf.py
parentc5dfd5c7328fe642d0ca2bb51be58253326af17f (diff)
downloadsphinx-git-d47a7587f9813f2366e2077be051116291bf930e.tar.gz
Complete test suite overhaul.
* rename a few test modules to make the names more consistent * do not copy/use Sphinx from build/ (unnecessary without 2to3) * use a temporary dir for *all* test projects, the source tree will stay pristine that way (default is tests/build) * speed up tests by ~3x by splitting up test projects and avoiding rebuilds
Diffstat (limited to 'tests/test_docutilsconf.py')
-rw-r--r--tests/test_docutilsconf.py85
1 files changed, 20 insertions, 65 deletions
diff --git a/tests/test_docutilsconf.py b/tests/test_docutilsconf.py
index c0ee4a17f..90fa5db32 100644
--- a/tests/test_docutilsconf.py
+++ b/tests/test_docutilsconf.py
@@ -9,50 +9,17 @@
:license: BSD, see LICENSE for details.
"""
-import os
import re
-from functools import wraps
-
-from six import StringIO
-
-from util import test_roots, TestApp, path, SkipTest
-
-
-html_warnfile = StringIO()
-root = test_roots / 'test-docutilsconf'
-
-
-# need cleanenv to rebuild everytime.
-# docutils.conf change did not effect to rebuild.
-def with_conf_app(docutilsconf='', *args, **kwargs):
- default_kw = {
- 'srcdir': root,
- 'cleanenv': True,
- }
- default_kw.update(kwargs)
- def generator(func):
- @wraps(func)
- def deco(*args2, **kwargs2):
- app = TestApp(*args, **default_kw)
- (app.srcdir / 'docutils.conf').write_text(docutilsconf)
- try:
- cwd = os.getcwd()
- os.chdir(app.srcdir)
- func(app, *args2, **kwargs2)
- finally:
- os.chdir(cwd)
- # don't execute cleanup if test failed
- app.cleanup()
- return deco
- return generator
+
+from util import with_app, path, SkipTest
def regex_count(expr, result):
return len(re.findall(expr, result))
-@with_conf_app(buildername='html')
-def test_html_with_default_docutilsconf(app):
+@with_app('html', testroot='docutilsconf', freshenv=True, docutilsconf='')
+def test_html_with_default_docutilsconf(app, status, warning):
app.builder.build(['contents'])
result = (app.outdir / 'contents.html').text(encoding='utf-8')
@@ -62,13 +29,13 @@ def test_html_with_default_docutilsconf(app):
assert regex_count(r'<td class="option-group" colspan="2">', result) == 1
-@with_conf_app(buildername='html', docutilsconf=(
+@with_app('html', testroot='docutilsconf', freshenv=True, docutilsconf=(
'\n[html4css1 writer]'
'\noption-limit:1'
'\nfield-name-limit:1'
'\n')
)
-def test_html_with_docutilsconf(app):
+def test_html_with_docutilsconf(app, status, warning):
app.builder.build(['contents'])
result = (app.outdir / 'contents.html').text(encoding='utf-8')
@@ -78,41 +45,32 @@ def test_html_with_docutilsconf(app):
assert regex_count(r'<td class="option-group" colspan="2">', result) == 2
-@with_conf_app(buildername='html', warning=html_warnfile)
-def test_html(app):
+@with_app('html', testroot='docutilsconf')
+def test_html(app, status, warning):
app.builder.build(['contents'])
- assert html_warnfile.getvalue() == ''
+ assert warning.getvalue() == ''
-@with_conf_app(buildername='latex', warning=html_warnfile)
-def test_latex(app):
+@with_app('latex', testroot='docutilsconf')
+def test_latex(app, status, warning):
app.builder.build(['contents'])
- assert html_warnfile.getvalue() == ''
+ assert warning.getvalue() == ''
-@with_conf_app(buildername='man', warning=html_warnfile)
-def test_man(app):
+@with_app('man', testroot='docutilsconf')
+def test_man(app, status, warning):
app.builder.build(['contents'])
- assert html_warnfile.getvalue() == ''
+ assert warning.getvalue() == ''
-@with_conf_app(buildername='texinfo', warning=html_warnfile)
-def test_texinfo(app):
+@with_app('texinfo', testroot='docutilsconf')
+def test_texinfo(app, status, warning):
app.builder.build(['contents'])
-@with_conf_app(buildername='html', srcdir='(empty)',
- docutilsconf='[general]\nsource_link=true\n')
-def test_docutils_source_link(app):
- srcdir = path(app.srcdir)
- (srcdir / 'conf.py').write_text('')
- (srcdir / 'contents.rst').write_text('')
- app.builder.build_all()
-
-
-@with_conf_app(buildername='html', srcdir='(empty)',
- docutilsconf='[general]\nsource_link=true\n')
-def test_docutils_source_link_with_nonascii_file(app):
+@with_app('html', testroot='docutilsconf',
+ docutilsconf='[general]\nsource_link=true\n')
+def test_docutils_source_link_with_nonascii_file(app, status, warning):
srcdir = path(app.srcdir)
mb_name = u'\u65e5\u672c\u8a9e'
try:
@@ -123,7 +81,4 @@ def test_docutils_source_link_with_nonascii_file(app):
'nonascii filename not supported on this filesystem encoding: '
'%s', FILESYSTEMENCODING)
- (srcdir / 'conf.py').write_text('')
- (srcdir / 'contents.rst').write_text('')
-
app.builder.build_all()