diff options
| author | shimizukawa <shimizukawa@gmail.com> | 2017-01-06 01:14:47 +0900 |
|---|---|---|
| committer | shimizukawa <shimizukawa@gmail.com> | 2017-01-06 01:14:47 +0900 |
| commit | baaef9146d46e772a680ecfe3d16e51806890156 (patch) | |
| tree | 7da272de8eed1063c0b9e7c68e52c288b08d3031 | |
| parent | b3c207dd4961b3ee3dd8c045734cb06b456e8dd8 (diff) | |
| download | sphinx-git-baaef9146d46e772a680ecfe3d16e51806890156.tar.gz | |
pytest: remove deprecated with_app decorator functions
38 files changed, 264 insertions, 246 deletions
diff --git a/tests/test_api_translator.py b/tests/test_api_translator.py index 7a70fd4c8..5f2707cc3 100644 --- a/tests/test_api_translator.py +++ b/tests/test_api_translator.py @@ -11,7 +11,8 @@ import sys -from util import with_app, rootdir +import pytest +from util import rootdir def setup_module(): @@ -22,7 +23,7 @@ def teardown_module(): sys.path.remove(rootdir / 'roots' / 'test-api-set-translator') -@with_app('html') +@pytest.mark.sphinx('html') def test_html_translator(app, status, warning): # no set_translator(), no html_translator_class translator_class = app.builder.translator_class @@ -30,7 +31,7 @@ def test_html_translator(app, status, warning): assert translator_class.__name__ == 'SmartyPantsHTMLTranslator' -@with_app('html', confoverrides={ +@pytest.mark.sphinx('html', confoverrides={ 'html_translator_class': 'translator.ExtHTMLTranslator'}) def test_html_with_html_translator_class(app, status, warning): # no set_translator(), but html_translator_class @@ -39,8 +40,8 @@ def test_html_with_html_translator_class(app, status, warning): assert translator_class.__name__ == 'ExtHTMLTranslator' -@with_app('html', - confoverrides={'html_use_smartypants': False}) +@pytest.mark.sphinx('html', confoverrides={ + 'html_use_smartypants': False}) def test_html_with_smartypants(app, status, warning): # no set_translator(), html_use_smartypants=False translator_class = app.builder.translator_class @@ -48,7 +49,7 @@ def test_html_with_smartypants(app, status, warning): assert translator_class.__name__ == 'HTMLTranslator' -@with_app('html', testroot='api-set-translator') +@pytest.mark.sphinx('html', testroot='api-set-translator') def test_html_with_set_translator_for_html_(app, status, warning): # use set_translator(), no html_translator_class translator_class = app.builder.translator_class @@ -56,8 +57,8 @@ def test_html_with_set_translator_for_html_(app, status, warning): assert translator_class.__name__ == 'ConfHTMLTranslator' -@with_app('html', testroot='api-set-translator', - confoverrides={'html_translator_class': 'translator.ExtHTMLTranslator'}) +@pytest.mark.sphinx('html', testroot='api-set-translator', confoverrides={ + 'html_translator_class': 'translator.ExtHTMLTranslator'}) def test_html_with_set_translator_for_html_and_html_translator_class( app, status, warning): # use set_translator() and html_translator_class. @@ -68,7 +69,7 @@ def test_html_with_set_translator_for_html_and_html_translator_class( # this test break test_websupport.test_comments test. why? -# @with_app( +# @pytest.mark.sphinx( # buildername='dirhtml', # srcdir=(test_roots / 'test-api-set-translator'), # ) @@ -78,63 +79,63 @@ def test_html_with_set_translator_for_html_and_html_translator_class( # assert translator_class.__name__ == 'ConfDirHTMLTranslator' -@with_app('singlehtml', testroot='api-set-translator') +@pytest.mark.sphinx('singlehtml', testroot='api-set-translator') def test_singlehtml_set_translator_for_singlehtml(app, status, warning): translator_class = app.builder.translator_class assert translator_class assert translator_class.__name__ == 'ConfSingleHTMLTranslator' -@with_app('pickle', testroot='api-set-translator') +@pytest.mark.sphinx('pickle', testroot='api-set-translator') def test_pickle_set_translator_for_pickle(app, status, warning): translator_class = app.builder.translator_class assert translator_class assert translator_class.__name__ == 'ConfPickleTranslator' -@with_app('json', testroot='api-set-translator') +@pytest.mark.sphinx('json', testroot='api-set-translator') def test_json_set_translator_for_json(app, status, warning): translator_class = app.builder.translator_class assert translator_class assert translator_class.__name__ == 'ConfJsonTranslator' -@with_app('latex', testroot='api-set-translator') +@pytest.mark.sphinx('latex', testroot='api-set-translator') def test_html_with_set_translator_for_latex(app, status, warning): translator_class = app.builder.translator_class assert translator_class assert translator_class.__name__ == 'ConfLaTeXTranslator' -@with_app('man', testroot='api-set-translator') +@pytest.mark.sphinx('man', testroot='api-set-translator') def test_html_with_set_translator_for_man(app, status, warning): translator_class = app.builder.translator_class assert translator_class assert translator_class.__name__ == 'ConfManualPageTranslator' -@with_app('texinfo', testroot='api-set-translator') +@pytest.mark.sphinx('texinfo', testroot='api-set-translator') def test_html_with_set_translator_for_texinfo(app, status, warning): translator_class = app.builder.translator_class assert translator_class assert translator_class.__name__ == 'ConfTexinfoTranslator' -@with_app('text', testroot='api-set-translator') +@pytest.mark.sphinx('text', testroot='api-set-translator') def test_html_with_set_translator_for_text(app, status, warning): translator_class = app.builder.translator_class assert translator_class assert translator_class.__name__ == 'ConfTextTranslator' -@with_app('xml', testroot='api-set-translator') +@pytest.mark.sphinx('xml', testroot='api-set-translator') def test_html_with_set_translator_for_xml(app, status, warning): translator_class = app.builder.translator_class assert translator_class assert translator_class.__name__ == 'ConfXMLTranslator' -@with_app('pseudoxml', testroot='api-set-translator') +@pytest.mark.sphinx('pseudoxml', testroot='api-set-translator') def test_html_with_set_translator_for_pseudoxml(app, status, warning): translator_class = app.builder.translator_class assert translator_class diff --git a/tests/test_application.py b/tests/test_application.py index e5c00fc8d..00223350b 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -15,11 +15,10 @@ from docutils import nodes from sphinx.application import ExtensionError from sphinx.domains import Domain -from util import with_app, strip_escseq +from util import strip_escseq import pytest -@with_app() def test_events(app, status, warning): def empty(): pass @@ -45,13 +44,11 @@ def test_events(app, status, warning): "Callback called when disconnected" -@with_app() def test_emit_with_nonascii_name_node(app, status, warning): node = nodes.section(names=[u'\u65e5\u672c\u8a9e']) app.emit('my_event', node) -@with_app() def test_output(app, status, warning): # info with newline status.truncate(0) # __init__ writes to status @@ -71,7 +68,6 @@ def test_output(app, status, warning): assert app._warncount == old_count + 1 -@with_app() def test_output_with_unencodable_char(app, status, warning): class StreamWriter(codecs.StreamWriter): @@ -87,20 +83,17 @@ def test_output_with_unencodable_char(app, status, warning): assert status.getvalue() == "unicode ?...\n" -@with_app() def test_extensions(app, status, warning): app.setup_extension('shutil') assert strip_escseq(warning.getvalue()).startswith("WARNING: extension 'shutil'") -@with_app() def test_extension_in_blacklist(app, status, warning): app.setup_extension('sphinxjp.themecore') msg = strip_escseq(warning.getvalue()) assert msg.startswith("WARNING: the extension 'sphinxjp.themecore' was") -@with_app() def test_domain_override(app, status, warning): class A(Domain): name = 'foo' @@ -123,7 +116,7 @@ def test_domain_override(app, status, warning): assert 'new domain not a subclass of registered foo domain' in str(excinfo.value) -@with_app(testroot='add_source_parser') +@pytest.mark.sphinx(testroot='add_source_parser') def test_add_source_parser(app, status, warning): assert set(app.config.source_suffix) == set(['.rst', '.md', '.test']) assert set(app.config.source_parsers.keys()) == set(['.md', '.test']) @@ -131,7 +124,7 @@ def test_add_source_parser(app, status, warning): assert app.config.source_parsers['.test'].__name__ == 'TestSourceParser' -@with_app(testroot='add_source_parser-conflicts-with-users-setting') +@pytest.mark.sphinx(testroot='add_source_parser-conflicts-with-users-setting') def test_add_source_parser_conflicts_with_users_setting(app, status, warning): assert set(app.config.source_suffix) == set(['.rst', '.test']) assert set(app.config.source_parsers.keys()) == set(['.test']) diff --git a/tests/test_build.py b/tests/test_build.py index c99d87312..d623d9b88 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -9,16 +9,15 @@ :license: BSD, see LICENSE for details. """ -from six import BytesIO - import pickle from docutils import nodes import mock +import pytest from textwrap import dedent from sphinx.errors import SphinxError import sphinx.builders.linkcheck -from util import with_app, rootdir, tempdir, SkipTest, TestApp, path +from util import rootdir, tempdir, SkipTest, TestApp, path try: from docutils.writers.manpage import Writer as ManWriter @@ -91,7 +90,7 @@ def test_master_doc_not_found(tempdir): app.cleanup() -@with_app(buildername='text', testroot='circular') +@pytest.mark.sphinx(buildername='text', testroot='circular') def test_circular_toctree(app, status, warning): app.builder.build_all() warnings = warning.getvalue() @@ -103,7 +102,7 @@ def test_circular_toctree(app, status, warning): 'contents <- sub <- contents') in warnings -@with_app(buildername='text', testroot='numbered-circular') +@pytest.mark.sphinx(buildername='text', testroot='numbered-circular') def test_numbered_circular_toctree(app, status, warning): app.builder.build_all() warnings = warning.getvalue() @@ -115,7 +114,7 @@ def test_numbered_circular_toctree(app, status, warning): 'contents <- sub <- contents') in warnings -@with_app(buildername='dummy', testroot='image-glob') +@pytest.mark.sphinx(buildername='dummy', testroot='image-glob') def test_image_glob(app, status, warning): app.builder.build_all() diff --git a/tests/test_build_applehelp.py b/tests/test_build_applehelp.py index 63bb0ec89..48324e259 100644 --- a/tests/test_build_applehelp.py +++ b/tests/test_build_applehelp.py @@ -13,7 +13,7 @@ import plistlib -from util import with_app +import pytest from path import path # Use plistlib.load in 3.4 and above @@ -43,9 +43,10 @@ def check_localization(outdir): assert (lprojdir / 'localized.txt').isfile() -@with_app(buildername='applehelp', testroot='basic', srcdir='applehelp_output', - confoverrides={'applehelp_bundle_id': 'org.sphinx-doc.Sphinx.help', - 'applehelp_disable_external_tools': True}) +@pytest.mark.sphinx( + 'applehelp', testroot='basic', srcdir='applehelp_output', + confoverrides={'applehelp_bundle_id': 'org.sphinx-doc.Sphinx.help', + 'applehelp_disable_external_tools': True}) def test_applehelp_output(app, status, warning): (app.srcdir / 'en.lproj').makedirs() (app.srcdir / 'en.lproj' / 'localized.txt').write_text('') diff --git a/tests/test_build_gettext.py b/tests/test_build_gettext.py index 0ba6d5534..cbc17ab80 100644 --- a/tests/test_build_gettext.py +++ b/tests/test_build_gettext.py @@ -15,8 +15,10 @@ import re import gettext from subprocess import Popen, PIPE +import pytest + from util import ( - with_app, gen_with_app, SkipTest, assert_in, assert_true, assert_equal + gen_with_app, SkipTest, assert_in, assert_true, assert_equal ) @@ -76,8 +78,9 @@ def test_all(app, status, warning): yield assert_equal, _("Testing various markup"), u"Testing various markup" -@with_app('gettext', testroot='intl', srcdir='gettext', - confoverrides={'gettext_compact': False}) +@pytest.mark.sphinx( + 'gettext', testroot='intl', srcdir='gettext', + confoverrides={'gettext_compact': False}) def test_gettext_index_entries(app, status, warning): # regression test for #976 app.builder.build(['index_entries']) @@ -123,8 +126,9 @@ def test_gettext_index_entries(app, status, warning): assert msgids == [] -@with_app('gettext', testroot='intl', srcdir='gettext', - confoverrides={'gettext_compact': False, 'gettext_additional_targets': []}) +@pytest.mark.sphinx( + 'gettext', testroot='intl', srcdir='gettext', + confoverrides={'gettext_compact': False, 'gettext_additional_targets': []}) def test_gettext_disable_index_entries(app, status, warning): # regression test for #976 app.builder.build(['index_entries']) @@ -155,7 +159,7 @@ def test_gettext_disable_index_entries(app, status, warning): assert msgids == [] -@with_app(buildername='gettext', testroot='intl', srcdir='gettext') +@pytest.mark.sphinx('gettext', testroot='intl', srcdir='gettext') def test_gettext_template(app, status, warning): app.builder.build_all() assert (app.outdir / 'sphinx.pot').isfile() diff --git a/tests/test_build_html.py b/tests/test_build_html.py index e45c70052..3b8da34f0 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -15,9 +15,10 @@ import re from six import PY3, iteritems from sphinx import __display_version__ -from util import remove_unicode_literals, gen_with_app, with_app, strip_escseq +from util import remove_unicode_literals, gen_with_app, strip_escseq from etree13 import ElementTree from html5lib import getTreeBuilder, HTMLParser +import pytest TREE_BUILDER = getTreeBuilder('etree', implementation=ElementTree) @@ -384,7 +385,7 @@ def check_extra_entries(outdir): assert (outdir / 'robots.txt').isfile() -@with_app(buildername='html', testroot='warnings', freshenv=True) +@pytest.mark.sphinx('html', testroot='warnings', freshenv=True) def test_html_warnings(app, status, warning): app.builder.build_all() html_warnings = strip_escseq(warning.getvalue().replace(os.sep, '/')) @@ -1084,7 +1085,7 @@ def test_enumerable_node(app, status, warning): yield check_xpath, etree, fname, xpath, check, be_found -@with_app(buildername='html', testroot='html_assets') +@pytest.mark.sphinx('html', testroot='html_assets') def test_html_assets(app, status, warning): app.builder.build_all() @@ -1112,7 +1113,7 @@ def test_html_assets(app, status, warning): assert not (app.outdir / 'subdir' / '.htpasswd').exists() -@with_app(buildername='html', confoverrides={'html_sourcelink_suffix': ''}) +@pytest.mark.sphinx('html', confoverrides={'html_sourcelink_suffix': ''}) def test_html_sourcelink_suffix(app, status, warning): app.builder.build_all() content_otherext = (app.outdir / 'otherext.html').text() diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 7366763ca..027df463a 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -22,7 +22,7 @@ from sphinx.errors import SphinxError from sphinx.util.osutil import cd, ensuredir from sphinx.writers.latex import LaTeXTranslator -from util import SkipTest, remove_unicode_literals, with_app, strip_escseq, skip_if +from util import SkipTest, remove_unicode_literals, strip_escseq, skip_if from test_build_html import ENV_WARNINGS @@ -109,7 +109,7 @@ def test_build_latex_doc(app, status, warning, engine, docclass): compile_latex_document(app) -@with_app(buildername='latex') +@pytest.mark.sphinx('latex') def test_writer(app, status, warning): app.builder.build_all() result = (app.outdir / 'SphinxTests.tex').text(encoding='utf8') @@ -137,7 +137,7 @@ def test_writer(app, status, warning): '\\end{wrapfigure}' in result) -@with_app(buildername='latex', testroot='warnings', freshenv=True) +@pytest.mark.sphinx('latex', testroot='warnings', freshenv=True) def test_latex_warnings(app, status, warning): app.builder.build_all() @@ -150,7 +150,7 @@ def test_latex_warnings(app, status, warning): '--- Got:\n' + warnings -@with_app(buildername='latex', testroot='basic') +@pytest.mark.sphinx('latex', testroot='basic') def test_latex_title(app, status, warning): app.builder.build_all() result = (app.outdir / 'test.tex').text(encoding='utf8') @@ -160,7 +160,7 @@ def test_latex_title(app, status, warning): assert '\\title{The basic Sphinx documentation for testing}' in result -@with_app(buildername='latex', testroot='latex-title') +@pytest.mark.sphinx('latex', testroot='latex-title') def test_latex_title_after_admonitions(app, status, warning): app.builder.build_all() result = (app.outdir / 'test.tex').text(encoding='utf8') @@ -170,7 +170,7 @@ def test_latex_title_after_admonitions(app, status, warning): assert '\\title{test-latex-title}' in result -@with_app(buildername='latex', testroot='numfig', +@pytest.mark.sphinx('latex', testroot='numfig', confoverrides={'numfig': True}) def test_numref(app, status, warning): app.builder.build_all() @@ -203,12 +203,13 @@ def test_numref(app, status, warning): '\\nameref{\\detokenize{foo:foo}}}') in result -@with_app(buildername='latex', testroot='numfig', - confoverrides={'numfig': True, - 'numfig_format': {'figure': 'Figure:%s', - 'table': 'Tab_%s', - 'code-block': 'Code-%s', - 'section': 'SECTION-%s'}}) +@pytest.mark.sphinx( + 'latex', testroot='numfig', + confoverrides={'numfig': True, + 'numfig_format': {'figure': 'Figure:%s', + 'table': 'Tab_%s', + 'code-block': 'Code-%s', + 'section': 'SECTION-%s'}}) def test_numref_with_prefix1(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -246,12 +247,13 @@ def test_numref_with_prefix1(app, status, warning): '\\nameref{\\detokenize{foo:foo}}}') in result -@with_app(buildername='latex', testroot='numfig', - confoverrides={'numfig': True, - 'numfig_format': {'figure': 'Figure:%s.', - 'table': 'Tab_%s:', - 'code-block': 'Code-%s | ', - 'section': 'SECTION_%s_'}}) +@pytest.mark.sphinx( + 'latex', testroot='numfig', + confoverrides={'numfig': True, + 'numfig_format': {'figure': 'Figure:%s.', + 'table': 'Tab_%s:', + 'code-block': 'Code-%s | ', + 'section': 'SECTION_%s_'}}) def test_numref_with_prefix2(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -285,8 +287,9 @@ def test_numref_with_prefix2(app, status, warning): '\\nameref{\\detokenize{foo:foo}}}') in result -@with_app(buildername='latex', testroot='numfig', - confoverrides={'numfig': True, 'language': 'ja'}) +@pytest.mark.sphinx( + 'latex', testroot='numfig', + confoverrides={'numfig': True, 'language': 'ja'}) def test_numref_with_language_ja(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -318,7 +321,7 @@ def test_numref_with_language_ja(app, status, warning): '\\nameref{\\detokenize{foo:foo}}}') in result -@with_app(buildername='latex') +@pytest.mark.sphinx('latex') def test_latex_add_latex_package(app, status, warning): app.add_latex_package('foo') app.add_latex_package('bar', 'baz') @@ -328,7 +331,7 @@ def test_latex_add_latex_package(app, status, warning): assert '\\usepackage[baz]{bar}' in result -@with_app(buildername='latex', testroot='latex-babel') +@pytest.mark.sphinx('latex', testroot='latex-babel') def test_babel_with_no_language_settings(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -347,8 +350,9 @@ def test_babel_with_no_language_settings(app, status, warning): assert '\\shorthandoff' not in result -@with_app(buildername='latex', testroot='latex-babel', - confoverrides={'language': 'de'}) +@pytest.mark.sphinx( + 'latex', testroot='latex-babel', + confoverrides={'language': 'de'}) def test_babel_with_language_de(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -367,8 +371,9 @@ def test_babel_with_language_de(app, status, warning): assert '\\shorthandoff{"}' in result -@with_app(buildername='latex', testroot='latex-babel', - confoverrides={'language': 'ru'}) +@pytest.mark.sphinx( + 'latex', testroot='latex-babel', + confoverrides={'language': 'ru'}) def test_babel_with_language_ru(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -388,8 +393,9 @@ def test_babel_with_language_ru(app, status, warning): assert '\\shorthandoff' not in result -@with_app(buildername='latex', testroot='latex-babel', - confoverrides={'language': 'tr'}) +@pytest.mark.sphinx( + 'latex', testroot='latex-babel', + confoverrides={'language': 'tr'}) def test_babel_with_language_tr(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -408,8 +414,9 @@ def test_babel_with_language_tr(app, status, warning): assert '\\shorthandoff{=}' in result -@with_app(buildername='latex', testroot='latex-babel', - confoverrides={'language': 'ja'}) +@pytest.mark.sphinx( + 'latex', testroot='latex-babel', + confoverrides={'language': 'ja'}) def test_babel_with_language_ja(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -427,8 +434,9 @@ def test_babel_with_language_ja(app, status, warning): assert '\\shorthandoff' not in result -@with_app(buildername='latex', testroot='latex-babel', - confoverrides={'language': 'unknown'}) +@pytest.mark.sphinx( + 'latex', testroot='latex-babel', + confoverrides={'language': 'unknown'}) def test_babel_with_unknown_language(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -449,7 +457,7 @@ def test_babel_with_unknown_language(app, status, warning): assert "WARNING: no Babel option known for language 'unknown'" in warning.getvalue() -@with_app(buildername='latex') +@pytest.mark.sphinx('latex') def test_footnote(app, status, warning): app.builder.build_all() result = (app.outdir / 'SphinxTests.tex').text(encoding='utf8') @@ -479,7 +487,7 @@ def test_footnote(app, status, warning): 'footnotes in table\n%\n\\end{footnotetext}') in result -@with_app(buildername='latex', testroot='footnotes') +@pytest.mark.sphinx('latex', testroot='footnotes') def test_reference_in_caption_and_codeblock_in_footnote(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -516,8 +524,9 @@ def test_reference_in_caption_and_codeblock_in_footnote(app, status, warning): assert '\\begin{sphinxVerbatim}[commandchars=\\\\\\{\\}]' in result -@with_app(buildername='latex', testroot='footnotes', - confoverrides={'latex_show_urls': 'inline'}) +@pytest.mark.sphinx( + 'latex', testroot='footnotes', + confoverrides={'latex_show_urls': 'inline'}) def test_latex_show_urls_is_inline(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -559,8 +568,9 @@ def test_latex_show_urls_is_inline(app, status, warning): '{sphinx-dev@googlegroups.com}') in result -@with_app(buildername='latex', testroot='footnotes', - confoverrides={'latex_show_urls': 'footnote'}) +@pytest.mark.sphinx( + 'latex', testroot='footnotes', + confoverrides={'latex_show_urls': 'footnote'}) def test_latex_show_urls_is_footnote(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -610,8 +620,9 @@ def test_latex_show_urls_is_footnote(app, status, warning): '{sphinx-dev@googlegroups.com}\n') in result -@with_app(buildername='latex', testroot='footnotes', - confoverrides={'latex_show_urls': 'no'}) +@pytest.mark.sphinx( + 'latex', testroot='footnotes', + confoverrides={'latex_show_urls': 'no'}) def test_latex_show_urls_is_no(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -651,7 +662,7 @@ def test_latex_show_urls_is_no(app, status, warning): '{sphinx-dev@googlegroups.com}\n') in result -@with_app(buildername='latex', testroot='image-in-section') +@pytest.mark.sphinx('latex', testroot='image-in-section') def test_image_in_section(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -667,7 +678,7 @@ def test_image_in_section(app, status, warning): assert ('\\chapter{Another section}' in result) -@with_app(buildername='latex', confoverrides={'latex_logo': 'notfound.jpg'}) +@pytest.mark.sphinx('latex', confoverrides={'latex_logo': 'notfound.jpg'}) def test_latex_logo_if_not_found(app, status, warning): try: app.builder.build_all() @@ -676,7 +687,7 @@ def test_latex_logo_if_not_found(app, status, warning): assert isinstance(exc, SphinxError) -@with_app(buildername='latex', testroot='toctree-maxdepth', +@pytest.mark.sphinx('latex', testroot='toctree-maxdepth', confoverrides={'latex_documents': [ ('index', 'SphinxTests.tex', 'Sphinx Tests Documentation', 'Georg Brandl', 'manual'), @@ -691,11 +702,12 @@ def test_toctree_maxdepth_manual(app, status, warning): assert '\\setcounter{secnumdepth}' not in result -@with_app(buildername='latex', testroot='toctree-maxdepth', - confoverrides={'latex_documents': [ - ('index', 'SphinxTests.tex', 'Sphinx Tests Documentation', - 'Georg Brandl', 'howto'), - ]}) +@pytest.mark.sphinx( + 'latex', testroot='toctree-maxdepth', + confoverrides={'latex_documents': [ + ('index', 'SphinxTests.tex', 'Sphinx Tests Documentation', + 'Georg Brandl', 'howto'), + ]}) def test_toctree_maxdepth_howto(app, status, warning): app.builder.build_all() result = (app.outdir / 'SphinxTests.tex').text(encoding='utf8') @@ -706,8 +718,9 @@ def test_toctree_maxdepth_howto(app, status, warning): assert '\\setcounter{secnumdepth}' not in result -@with_app(buildername='latex', testroot='toctree-maxdepth', - confoverrides={'master_doc': 'foo'}) +@pytest.mark.sphinx( + 'latex', testroot='toctree-maxdepth', + confoverrides={'master_doc': 'foo'}) def test_toctree_not_found(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -718,8 +731,9 @@ def test_toctree_not_found(app, status, warning): assert '\\setcounter{secnumdepth}' not in result -@with_app(buildername='latex', testroot='toctree-maxdepth', - confoverrides={'master_doc': 'bar'}) +@pytest.mark.sphinx( + 'latex', testroot='toctree-maxdepth', + confoverrides={'master_doc': 'bar'}) def test_toctree_without_maxdepth(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -730,8 +744,9 @@ def test_toctree_without_maxdepth(app, status, warning): assert '\\setcounter{secnumdepth}' not in result -@with_app(buildername='latex', testroot='toctree-maxdepth', - confoverrides={'master_doc': 'qux'}) +@pytest.mark.sphinx( + 'latex', testroot='toctree-maxdepth', + confoverrides={'master_doc': 'qux'}) def test_toctree_with_deeper_maxdepth(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -742,8 +757,9 @@ def test_toctree_with_deeper_maxdepth(app, status, warning): assert '\\setcounter{secnumdepth}{3}' in result -@with_app(buildername='latex', testroot='toctree-maxdepth', - confoverrides={'latex_toplevel_sectioning': None}) +@pytest.mark.sphinx( + 'latex', testroot='toctree-maxdepth', + confoverrides={'latex_toplevel_sectioning': None}) def test_latex_toplevel_sectioning_is_None(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -753,8 +769,9 @@ def test_latex_toplevel_sectioning_is_None(app, status, warning): assert '\\chapter{Foo}' in result -@with_app(buildername='latex', testroot='toctree-maxdepth', - confoverrides={'latex_toplevel_sectioning': 'part'}) +@pytest.mark.sphinx( + 'latex', testroot='toctree-maxdepth', + confoverrides={'latex_toplevel_sectioning': 'part'}) def test_latex_toplevel_sectioning_is_part(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -764,8 +781,9 @@ def test_latex_toplevel_sectioning_is_part(app, status, warning): assert '\\part{Foo}' in result -@with_app(buildername='latex', testroot='toctree-maxdepth', - confoverrides={'latex_toplevel_sectioning': 'chapter'}) +@pytest.mark.sphinx( + 'latex', testroot='toctree-maxdepth', + confoverrides={'latex_toplevel_sectioning': 'chapter'}) def test_latex_toplevel_sectioning_is_chapter(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -775,8 +793,9 @@ def test_latex_toplevel_sectioning_is_chapter(app, status, warning): assert '\\chapter{Foo}' in result -@with_app(buildername='latex', testroot='toctree-maxdepth', - confoverrides={'latex_toplevel_sectioning': 'section'}) +@pytest.mark.sphinx( + 'latex', testroot='toctree-maxdepth', + confoverrides={'latex_toplevel_sectioning': 'section'}) def test_latex_toplevel_sectioning_is_section(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') @@ -786,7 +805,7 @@ def test_latex_toplevel_sectioning_is_section(app, status, warning): assert '\\section{Foo}' in result @skip_if_stylefiles_notfound -@with_app(buildername='latex', testroot='maxlistdepth') +@pytest.mark.sphinx('latex', testroot='maxlistdepth') def test_maxlistdepth_at_ten(app, status, warning): app.builder.build_all() result = (app.outdir / 'SphinxTests.tex').text(encoding='utf8') diff --git a/tests/test_build_linkcheck.py b/tests/test_build_linkcheck.py index 1d75135af..f776f772a 100644 --- a/tests/test_build_linkcheck.py +++ b/tests/test_build_linkcheck.py @@ -10,10 +10,10 @@ """ from __future__ import print_function -from util import with_app +import pytest -@with_app('linkcheck', testroot='linkcheck', freshenv=True) +@pytest.mark.sphinx('linkcheck', testroot='linkcheck', freshenv=True) def test_defaults(app, status, warning): app.builder.build_all() @@ -26,8 +26,9 @@ def test_defaults(app, status, warning): assert len(content.splitlines()) == 1 -@with_app('linkcheck', testroot='linkcheck', freshenv=True, - confoverrides={'linkcheck_anchors_ignore': ["^!", "^top$"]}) +@pytest.mark.sphinx( + 'linkcheck', testroot='linkcheck', freshenv=True, + confoverrides={'linkcheck_anchors_ignore': ["^!", "^top$"]}) def test_anchors_ignored(app, status, warning): app.builder.build_all() diff --git a/tests/test_build_manpage.py b/tests/test_build_manpage.py index 8da2eaadd..b91a4fd29 100644 --- a/tests/test_build_manpage.py +++ b/tests/test_build_manpage.py @@ -10,10 +10,10 @@ """ from __future__ import print_function -from util import with_app +import pytest -@with_app(buildername='man') +@pytest.mark.sphinx('man') def test_all(app, status, warning): app.builder.build_all() assert (app.outdir / 'SphinxTests.1').exists() diff --git a/tests/test_build_texinfo.py b/tests/test_build_texinfo.py index 06da311df..bd7bd6270 100644 --- a/tests/test_build_texinfo.py +++ b/tests/test_build_texinfo.py @@ -15,10 +15,11 @@ import re from subprocess import Popen, PIPE from six import PY3 +import pytest from sphinx.writers.texinfo import TexinfoTranslator -from util import SkipTest, remove_unicode_literals, with_app, strip_escseq +from util import SkipTest, remove_unicode_literals, strip_escseq from test_build_html import ENV_WARNINGS @@ -33,7 +34,7 @@ if PY3: TEXINFO_WARNINGS = remove_unicode_literals(TEXINFO_WARNINGS) -@with_app(buildername='texinfo', testroot='warnings', freshenv=True) +@pytest.mark.sphinx('texinfo', testroot='warnings', freshenv=True) def test_texinfo_warnings(app, status, warning): app.builder.build_all() warnings = strip_escseq(warning.getvalue().replace(os.sep, '/')) @@ -45,7 +46,7 @@ def test_texinfo_warnings(app, status, warning): '--- Got:\n' + warnings -@with_app(buildername='texinfo') +@pytest.mark.sphinx('texinfo') def test_texinfo(app, status, warning): TexinfoTranslator.ignore_missing_images = True app.builder.build_all() diff --git a/tests/test_catalogs.py b/tests/test_catalogs.py index d0606d945..7e395274c 100644 --- a/tests/test_catalogs.py +++ b/tests/test_catalogs.py @@ -12,7 +12,7 @@ import shutil import pytest -from util import with_app, find_files, rootdir, tempdir +from util import find_files, rootdir, tempdir root = tempdir / 'test-intl' build_dir = root / '_build' @@ -37,8 +37,9 @@ def setup_test(): @pytest.mark.usefixtures('setup_test') -@with_app(buildername='html', testroot='intl', - confoverrides={'language': 'en', 'locale_dirs': [locale_dir]}) +@pytest.mark.sphinx( + 'html', testroot='intl', + confoverrides={'language': 'en', 'locale_dirs': [locale_dir]}) def test_compile_all_catalogs(app, status, warning): app.builder.compile_all_catalogs() @@ -53,8 +54,9 @@ def test_compile_all_catalogs(app, status, warning): @pytest.mark.usefixtures('setup_test') -@with_app(buildername='html', testroot='intl', - confoverrides={'language': 'en', 'locale_dirs': [locale_dir]}) +@pytest.mark.sphinx( + 'html', testroot='intl', + confoverrides={'language': 'en', 'locale_dirs': [locale_dir]}) def test_compile_specific_catalogs(app, status, warning): catalog_dir = locale_dir / app.config.language / 'LC_MESSAGES' @@ -68,8 +70,9 @@ def test_compile_specific_catalogs(app, status, warning): @pytest.mark.usefixtures('setup_test') -@with_app(buildername='html', testroot='intl', - confoverrides={'language': 'en', 'locale_dirs': [locale_dir]}) +@pytest.mark.sphinx( + 'html', testroot='intl', + confoverrides={'language': 'en', 'locale_dirs': [locale_dir]}) def test_compile_update_catalogs(app, status, warning): app.builder.compile_update_catalogs() diff --git a/tests/test_config.py b/tests/test_config.py index 26a43a9c6..aef5ed846 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -13,7 +13,7 @@ from six import PY3, iteritems import pytest import mock -from util import TestApp, with_app, gen_with_app, \ +from util import TestApp, gen_with_app, \ assert_in, assert_not_in import sphinx @@ -21,9 +21,11 @@ from sphinx.config import Config from sphinx.errors import ExtensionError, ConfigError, VersionRequirementError -@with_app(confoverrides={'master_doc': 'master', 'nonexisting_value': 'True', - 'latex_elements.docclass': 'scrartcl', - 'modindex_common_prefix': 'path1,path2'}) +@pytest.mark.sphinx(confoverrides={ + 'master_doc': 'master', + 'nonexisting_value': 'True', + 'latex_elements.docclass': 'scrartcl', + 'modindex_common_prefix': 'path1,path2'}) def test_core_config(app, status, warning): cfg = app.config @@ -74,7 +76,7 @@ def test_core_config(app, status, warning): assert cfg['project'] == cfg.project == 'Sphinx Tests' -@with_app() +@pytest.mark.sphinx() def test_extension_values(app, status, warning): cfg = app.config @@ -169,7 +171,7 @@ def test_config_eol(tempdir): assert cfg.project == u'spam' -@with_app(confoverrides={'master_doc': 123, +@pytest.mark.sphinx(confoverrides={'master_doc': 123, 'language': 'foo', 'primary_domain': None}) def test_builtin_conf(app, status, warning): @@ -215,13 +217,13 @@ def test_gen_check_types(app, status, warning): ) -@with_app(testroot='config') +@pytest.mark.sphinx(testroot='config') def test_check_enum(app, status, warning): assert "The config value `value17` has to be a one of ('default', 'one', 'two'), " \ not in warning.getvalue() -@with_app(testroot='config', confoverrides={'value17': 'invalid'}) +@pytest.mark.sphinx(testroot='config', confoverrides={'value17': 'invalid'}) def test_check_enum_failed(app, status, warning): assert "The config value `value17` has to be a one of ('default', 'one', 'two'), " \ "but `invalid` is given." in warning.getvalue() diff --git a/tests/test_directive_code.py b/tests/test_directive_code.py index cb6221355..f168eafbe 100644 --- a/tests/test_directive_code.py +++ b/tests/test_directive_code.py @@ -9,10 +9,12 @@ :license: BSD, see LICENSE for details. """ -from util import with_app, etree_parse +import pytest +from util import etree_parse -@with_app('xml', testroot='directive-code') + +@pytest.mark.sphinx('xml', testroot='directive-code') def test_code_block(app, status, warning): app.builder.build('index') et = etree_parse(app.outdir / 'index.xml') @@ -28,7 +30,7 @@ def test_code_block(app, status, warning): assert actual == expect -@with_app('xml', testroot='directive-code') +@pytest.mark.sphinx('xml', testroot='directive-code') def test_code_block_dedent(app, status, warning): app.builder.build(['dedent_code']) et = etree_parse(app.outdir / 'dedent_code.xml') @@ -47,7 +49,7 @@ def test_code_block_dedent(app, status, warning): assert blocks[5].text == '\n\n' # dedent: 1000 -@with_app('html', testroot='directive-code') +@pytest.mark.sphinx('html', testroot='directive-code') def test_code_block_caption_html(app, status, warning): app.builder.build(['caption']) html = (app.outdir / 'caption.html').text(encoding='utf-8') @@ -59,7 +61,7 @@ def test_code_block_caption_html(app, status, warning): assert caption in html -@with_app('latex', testroot='directive-code') +@pytest.mark.sphinx('latex', testroot='directive-code') def test_code_block_caption_latex(app, status, warning): app.builder.build_all() latex = (app.outdir / 'Python.tex').text(encoding='utf-8') @@ -72,7 +74,7 @@ def test_code_block_caption_latex(app, status, warning): assert link in latex -@with_app('latex', testroot='directive-code') +@pytest.mark.sphinx('latex', testroot='directive-code') def test_code_block_namedlink_latex(app, status, warning): app.builder.build_all() latex = (app.outdir / 'Python.tex').text(encoding='utf-8') @@ -89,7 +91,7 @@ def test_code_block_namedlink_latex(app, status, warning): assert link2 in latex -@with_app('xml', testroot='directive-code') +@pytest.mark.sphinx('xml', testroot='directive-code') def test_literal_include(app, status, warning): app.builder.build(['index']) et = etree_parse(app.outdir / 'index.xml') @@ -101,7 +103,7 @@ def test_literal_include(app, status, warning): assert actual == literal_src -@with_app('xml', testroot='directive-code') +@pytest.mark.sphinx('xml', testroot='directive-code') def test_literal_include_dedent(app, status, warning): literal_src = (app.srcdir / 'literal.inc').text(encoding='utf-8') literal_lines = [l[4:] for l in literal_src.split('\n')[9:11]] @@ -119,7 +121,7 @@ def test_literal_include_dedent(app, status, warning): assert blocks[5].text == '\n\n' # dedent: 1000 -@with_app('xml', testroot='directive-code') +@pytest.mark.sphinx('xml', testroot='directive-code') def test_literal_include_block_start_with_comment_or_brank(app, status, warning): app.builder.build(['python']) et = etree_parse(app.outdir / 'python.xml') @@ -143,7 +145,7 @@ def test_literal_include_block_start_with_comment_or_brank(app, status, warning) assert actual == expect -@with_app('html', testroot='directive-code') +@pytest.mark.sphinx('html', testroot='directive-code') def test_literal_include_linenos(app, status, warning): app.builder.build(['linenos']) html = (app.outdir / 'linenos.html').text(encoding='utf-8') @@ -166,7 +168,7 @@ def test_literal_include_linenos(app, status, warning): assert linenos in html -@with_app('html', testroot='directive-code') +@pytest.mark.sphinx('html', testroot='directive-code') def test_literal_include_lineno_start(app, status, warning): app.builder.build(['lineno_start']) html = (app.outdir / 'lineno_start.html').text(encoding='utf-8') @@ -189,7 +191,7 @@ def test_literal_include_lineno_start(app, status, warning): assert linenos in html -@with_app('html', testroot='directive-code') +@pytest.mark.sphinx('html', testroot='directive-code') def test_literal_include_lineno_match(app, status, warning): app.builder.build(['lineno_match']) html = (app.outdir / 'lineno_match.html').text(encoding='utf-8') @@ -229,7 +231,7 @@ def test_literal_include_lineno_match(app, status, warning): assert start_at_end_at in html -@with_app('latex', testroot='directive-code') +@pytest.mark.sphinx('latex', testroot='directive-code') def test_literalinclude_file_whole_of_emptyline(app, status, warning): app.builder.build_all() latex = (app.outdir / 'Python.tex').text(encoding='utf-8').replace('\r\n', '\n') @@ -243,7 +245,7 @@ def test_literalinclude_file_whole_of_emptyline(app, status, warning): assert includes in latex -@with_app('html', testroot='directive-code') +@pytest.mark.sphinx('html', testroot='directive-code') def test_literalinclude_caption_html(app, status, warning): app.builder.build('index') html = (app.outdir / 'caption.html').text(encoding='utf-8') @@ -255,7 +257,7 @@ def test_literalinclude_caption_html(app, status, warning): assert caption in html -@with_app('latex', testroot='directive-code') +@pytest.mark.sphinx('latex', testroot='directive-code') def test_literalinclude_caption_latex(app, status, warning): app.builder.build('index') latex = (app.outdir / 'Python.tex').text(encoding='utf-8') @@ -268,7 +270,7 @@ def test_literalinclude_caption_latex(app, status, warning): assert link in latex -@with_app('latex', testroot='directive-code') +@pytest.mark.sphinx('latex', testroot='directive-code') def test_literalinclude_namedlink_latex(app, status, warning): app.builder.build('index') latex = (app.outdir / 'Python.tex').text(encoding='utf-8') @@ -285,7 +287,7 @@ def test_literalinclude_namedlink_latex(app, status, warning): assert link2 in latex -@with_app('xml', testroot='directive-code') +@pytest.mark.sphinx('xml', testroot='directive-code') def test_literalinclude_classes(app, status, warning): app.builder.build(['classes']) et = etree_parse(app.outdir / 'classes.xml') diff --git a/tests/test_directive_only.py b/tests/test_directive_only.py index def064c5a..30b569a12 100644 --- a/tests/test_directive_only.py +++ b/tests/test_directive_only.py @@ -13,11 +13,10 @@ import re from docutils import nodes from sphinx.util.nodes import process_only_nodes +import pytest -from util import with_app - -@with_app('text', testroot='directive-only') +@pytest.mark.sphinx('text', testroot='directive-only') def test_sectioning(app, status, warning): def getsects(section): diff --git a/tests/test_docutilsconf.py b/tests/test_docutilsconf.py index ebd0782bd..89ec63107 100644 --- a/tests/test_docutilsconf.py +++ b/tests/test_docutilsconf.py @@ -11,14 +11,15 @@ import re -from util import with_app, path, SkipTest +import pytest +from util import path, SkipTest def regex_count(expr, result): return len(re.findall(expr, result)) -@with_app('html', testroot='docutilsconf', freshenv=True, docutilsconf='') +@pytest.mark.sphinx('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') @@ -29,7 +30,7 @@ def test_html_with_default_docutilsconf(app, status, warning): assert regex_count(r'<td class="option-group" colspan="2">', result) == 1 -@with_app('html', testroot='docutilsconf', freshenv=True, docutilsconf=( +@pytest.mark.sphinx('html', testroot='docutilsconf', freshenv=True, docutilsconf=( '\n[html4css1 writer]' '\noption-limit:1' '\nfield-name-limit:1' @@ -45,31 +46,31 @@ def test_html_with_docutilsconf(app, status, warning): assert regex_count(r'<td class="option-group" colspan="2">', result) == 2 -@with_app('html', testroot='docutilsconf') +@pytest.mark.sphinx('html', testroot='docutilsconf') def test_html(app, status, warning): app.builder.build(['contents']) assert warning.getvalue() == '' -@with_app('latex', testroot='docutilsconf') +@pytest.mark.sphinx('latex', testroot='docutilsconf') def test_latex(app, status, warning): app.builder.build(['contents']) assert warning.getvalue() == '' -@with_app('man', testroot='docutilsconf') +@pytest.mark.sphinx('man', testroot='docutilsconf') def test_man(app, status, warning): app.builder.build(['contents']) assert warning.getvalue() == '' -@with_app('texinfo', testroot='docutilsconf') +@pytest.mark.sphinx('texinfo', testroot='docutilsconf') def test_texinfo(app, status, warning): app.builder.build(['contents']) -@with_app('html', testroot='docutilsconf', - docutilsconf='[general]\nsource_link=true\n') +@pytest.mark.sphinx('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' diff --git a/tests/test_domain_cpp.py b/tests/test_domain_cpp.py index 490f775dd..58e6093ba 100644 --- a/tests/test_domain_cpp.py +++ b/tests/test_domain_cpp.py @@ -14,8 +14,6 @@ import re from six import text_type import pytest -from util import with_app - from sphinx import addnodes from sphinx.domains.cpp import DefinitionParser, DefinitionError, NoOldIdError from sphinx.domains.cpp import Symbol @@ -505,7 +503,7 @@ def test_attributes(): # raise DefinitionError("") -@with_app(testroot='domain-cpp', confoverrides={'add_function_parentheses': True}) +@pytest.mark.sphinx(testroot='domain-cpp', confoverrides={'add_function_parentheses': True}) def test_build_domain_cpp_with_add_function_parentheses_is_True(app, status, warning): app.builder.build_all() @@ -542,7 +540,8 @@ def test_build_domain_cpp_with_add_function_parentheses_is_True(app, status, war check(s, t, f) -@with_app(testroot='domain-cpp', confoverrides={'add_function_parentheses': False}) +@pytest.mark.sphinx(testroot='domain-cpp', confoverrides={ + 'add_function_parentheses': False}) def test_build_domain_cpp_with_add_function_parentheses_is_False(app, status, warning): app.builder.build_all() diff --git a/tests/test_environment_toctree.py b/tests/test_environment_toctree.py index 20188c16a..037109126 100644 --- a/tests/test_environment_toctree.py +++ b/tests/test_environment_toctree.py @@ -14,8 +14,9 @@ from docutils.nodes import bullet_list, list_item, caption, comment, reference from sphinx import addnodes from sphinx.addnodes import compact_paragraph, only from sphinx.builders.html import StandaloneHTMLBuilder +import pytest -from util import with_app, gen_with_app, assert_node +from util import gen_with_app, assert_node @gen_with_app('xml', testroot='toctree') @@ -97,7 +98,7 @@ def _test_process_doc(app): assert 'qux' not in app.env.toctree_includes -@with_app('dummy', testroot='toctree-glob') +@pytest.mark.sphinx('dummy', testroot='toctree-glob') def test_glob(app, status, warning): includefiles = ['foo', 'bar/index', 'bar/bar_1', 'bar/bar_2', 'bar/bar_3', 'baz', 'qux/index'] diff --git a/tests/test_ext_autodoc.py b/tests/test_ext_autodoc.py index dad7521af..873fc23c9 100644 --- a/tests/test_ext_autodoc.py +++ b/tests/test_ext_autodoc.py @@ -10,12 +10,11 @@ """ import pickle -from docutils import nodes +import pytest from sphinx import addnodes -from util import with_app -@with_app(buildername='dummy', testroot='ext-autodoc') +@pytest.mark.sphinx('dummy', testroot='ext-autodoc') def test_autodoc(app, status, warning): app.builder.build_all() diff --git a/tests/test_ext_autosectionlabel.py b/tests/test_ext_autosectionlabel.py index ff7cd6776..71d19e800 100644 --- a/tests/test_ext_autosectionlabel.py +++ b/tests/test_ext_autosectionlabel.py @@ -11,10 +11,10 @@ import re -from util import with_app +import pytest -@with_app('html', testroot='ext-autosectionlabel') +@pytest.mark.sphinx('html', testroot='ext-autosectionlabel') def test_autosectionlabel_html(app, status, warning): app.builder.build_all() diff --git a/tests/test_ext_autosummary.py b/tests/test_ext_autosummary.py index f8a8a3900..84c73d632 100644 --- a/tests/test_ext_autosummary.py +++ b/tests/test_ext_autosummary.py @@ -13,7 +13,7 @@ from six import iteritems, StringIO from sphinx.ext.autosummary import mangle_signature -from util import with_app +import pytest html_warnfile = StringIO() @@ -54,7 +54,7 @@ def test_mangle_signature(): assert res == outp, (u"'%s' -> '%s' != '%s'" % (inp, res, outp)) -@with_app(buildername='dummy', **default_kw) +@pytest.mark.sphinx('dummy', **default_kw) def test_get_items_summary(app, status, warning): # monkey-patch Autosummary.get_items so we can easily get access to it's # results.. diff --git a/tests/test_ext_coverage.py b/tests/test_ext_coverage.py index ddf8efe51..4ae18b66e 100644 --- a/tests/test_ext_coverage.py +++ b/tests/test_ext_coverage.py @@ -11,10 +11,10 @@ import pickle -from util import with_app +import pytest -@with_app(buildername='coverage') +@pytest.mark.sphinx('coverage') def test_build(app, status, warning): app.builder.build_all() diff --git a/tests/test_ext_doctest.py b/tests/test_ext_doctest.py index d2a2d90ce..6b17f2ed7 100644 --- a/tests/test_ext_doctest.py +++ b/tests/test_ext_doctest.py @@ -8,13 +8,12 @@ :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ - -from util import with_app +import pytest cleanup_called = 0 -@with_app(buildername='doctest', testroot='doctest') +@pytest.mark.sphinx('doctest', testroot='doctest') def test_build(app, status, warning): global cleanup_called cleanup_called = 0 diff --git a/tests/test_ext_githubpages.py b/tests/test_ext_githubpages.py index f74ed5315..2eff6be78 100644 --- a/tests/test_ext_githubpages.py +++ b/tests/test_ext_githubpages.py @@ -9,10 +9,10 @@ :license: BSD, see LICENSE for details. """ -from util import with_app +import pytest -@with_app('html', testroot='ext-githubpages') +@pytest.mark.sphinx('html', testroot='ext-githubpages') def test_githubpages(app, status, warning): app.builder.build_all() assert (app.outdir / '.nojekyll').exists() diff --git a/tests/test_ext_graphviz.py b/tests/test_ext_graphviz.py index e59143d37..45850f3ce 100644 --- a/tests/test_ext_graphviz.py +++ b/tests/test_ext_graphviz.py @@ -13,10 +13,8 @@ import re import pytest -from util import with_app, SkipTest - -@with_app('html', testroot='ext-graphviz') +@pytest.mark.sphinx('html', testroot='ext-graphviz') @pytest.mark.usefixtures('if_graphviz_found') def test_graphviz_html(app, status, warning): app.builder.build_all() @@ -37,7 +35,7 @@ def test_graphviz_html(app, status, warning): assert re.search(html, content, re.S) -@with_app('latex', testroot='ext-graphviz') +@pytest.mark.sphinx('latex', testroot='ext-graphviz') @pytest.mark.usefixtures('if_graphviz_found') def test_graphviz_latex(app, status, warning): app.builder.build_all() @@ -57,7 +55,7 @@ def test_graphviz_latex(app, status, warning): assert re.search(macro, content, re.S) -@with_app('html', testroot='ext-graphviz', confoverrides={'language': 'xx'}) +@pytest.mark.sphinx('html', testroot='ext-graphviz', confoverrides={'language': 'xx'}) @pytest.mark.usefixtures('if_graphviz_found') def test_graphviz_i18n(app, status, warning): app.builder.build_all() diff --git a/tests/test_ext_ifconfig.py b/tests/test_ext_ifconfig.py index 835ab0938..1ed7c78d2 100644 --- a/tests/test_ext_ifconfig.py +++ b/tests/test_ext_ifconfig.py @@ -9,10 +9,10 @@ :license: BSD, see LICENSE for details. """ -from util import with_app +import pytest -@with_app(buildername='text', testroot='ext-ifconfig') +@pytest.mark.sphinx('text', testroot='ext-ifconfig') def test_ifconfig(app, status, warning): app.builder.build_all() result = (app.outdir / 'index.txt').text() diff --git a/tests/test_ext_inheritance_diagram.py b/tests/test_ext_inheritance_diagram.py index a7f24f3c0..3ce4b23a5 100644 --- a/tests/test_ext_inheritance_diagram.py +++ b/tests/test_ext_inheritance_diagram.py @@ -11,12 +11,12 @@ import re import sys -from util import with_app, rootdir +from util import rootdir from sphinx.ext.inheritance_diagram import InheritanceException, import_classes import pytest -@with_app('html', testroot='ext-inheritance_diagram') +@pytest.mark.sphinx('html', testroot='ext-inheritance_diagram') @pytest.mark.usefixtures('if_graphviz_found') def test_inheritance_diagram_html(app, status, warning): app.builder.build_all() @@ -31,7 +31,7 @@ def test_inheritance_diagram_html(app, status, warning): assert re.search(pattern, content, re.M) -@with_app('latex', testroot='ext-inheritance_diagram') +@pytest.mark.sphinx('latex', testroot='ext-inheritance_diagram') @pytest.mark.usefixtures('if_graphviz_found') def test_inheritance_diagram_latex(app, status, warning): app.builder.build_all() diff --git a/tests/test_ext_intersphinx.py b/tests/test_ext_intersphinx.py index 92a9b8d33..a913102b1 100644 --- a/tests/test_ext_intersphinx.py +++ b/tests/test_ext_intersphinx.py @@ -23,8 +23,6 @@ from sphinx.ext.intersphinx import read_inventory, \ load_mappings, missing_reference, _strip_basic_auth, _read_from_url, \ _get_safe_url, fetch_inventory, INVENTORY_FILENAME -from util import with_app - inventory_v1 = '''\ # Sphinx inventory version 1 @@ -82,7 +80,6 @@ def test_read_inventory_v2(): '/util/glossary.html#term-a-term-including-colon' -@with_app() @mock.patch('sphinx.ext.intersphinx.read_inventory') @mock.patch('sphinx.ext.intersphinx._read_from_url') def test_fetch_inventory_redirection(_read_from_url, read_inventory, app, status, warning): @@ -127,7 +124,6 @@ def test_fetch_inventory_redirection(_read_from_url, read_inventory, app, status assert read_inventory.call_args[0][1] == 'http://hostname/' -@with_app() def test_missing_reference(tempdir, app, status, warning): inv_file = tempdir / 'inventory' inv_file.write_bytes(inventory_v2) @@ -217,7 +213,6 @@ def test_missing_reference(tempdir, app, status, warning): assert rn['refuri'] == '../../../../py3k/foo.html#module-module1' -@with_app() def test_load_mappings_warnings(tempdir, app, status, warning): """ load_mappings issues a warning if new-style mapping diff --git a/tests/test_ext_math.py b/tests/test_ext_math.py index 0c7d44e8e..0e02c924f 100644 --- a/tests/test_ext_math.py +++ b/tests/test_ext_math.py @@ -11,11 +11,13 @@ import re -from util import with_app, SkipTest +import pytest +from util import SkipTest -@with_app(buildername='html', testroot='ext-math', - confoverrides = {'extensions': ['sphinx.ext.jsmath'], 'jsmath_path': 'dummy.js'}) +@pytest.mark.sphinx( + 'html', testroot='ext-math', + confoverrides = {'extensions': ['sphinx.ext.jsmath'], 'jsmath_path': 'dummy.js'}) def test_jsmath(app, status, warning): app.builder.build_all() content = (app.outdir / 'math.html').text() @@ -33,7 +35,7 @@ def test_jsmath(app, status, warning): assert '<div class="math">\na + 1 < b</div>' in content -@with_app('html', testroot='ext-math-simple', +@pytest.mark.sphinx('html', testroot='ext-math-simple', confoverrides = {'extensions': ['sphinx.ext.imgmath']}) def test_imgmath_png(app, status, warning): app.builder.build_all() @@ -48,7 +50,7 @@ def test_imgmath_png(app, status, warning): assert re.search(html, content, re.S) -@with_app('html', testroot='ext-math-simple', +@pytest.mark.sphinx('html', testroot='ext-math-simple', confoverrides={'extensions': ['sphinx.ext.imgmath'], 'imgmath_image_format': 'svg'}) def test_imgmath_svg(app, status, warning): @@ -64,7 +66,7 @@ def test_imgmath_svg(app, status, warning): assert re.search(html, content, re.S) -@with_app('html', testroot='ext-math', +@pytest.mark.sphinx('html', testroot='ext-math', confoverrides={'extensions': ['sphinx.ext.mathjax']}) def test_mathjax_align(app, status, warning): app.builder.build_all() @@ -76,7 +78,7 @@ def test_mathjax_align(app, status, warning): assert re.search(html, content, re.S) -@with_app('html', testroot='ext-math', +@pytest.mark.sphinx('html', testroot='ext-math', confoverrides={'math_number_all': True, 'extensions': ['sphinx.ext.mathjax']}) def test_math_number_all_mathjax(app, status, warning): @@ -88,7 +90,7 @@ def test_math_number_all_mathjax(app, status, warning): assert re.search(html, content, re.S) -@with_app('latex', testroot='ext-math', +@pytest.mark.sphinx('latex', testroot='ext-math', confoverrides={'extensions': ['sphinx.ext.mathjax']}) def test_math_number_all_latex(app, status, warning): app.builder.build_all() diff --git a/tests/test_ext_todo.py b/tests/test_ext_todo.py index 269a8a2be..cbea9b74c 100644 --- a/tests/test_ext_todo.py +++ b/tests/test_ext_todo.py @@ -10,10 +10,11 @@ """ import re -from util import with_app +import pytest -@with_app('html', testroot='ext-todo', freshenv=True, + +@pytest.mark.sphinx('html', testroot='ext-todo', freshenv=True, confoverrides={'todo_include_todos': True, 'todo_emit_warnings': True}) def test_todo(app, status, warning): todos = [] @@ -49,7 +50,7 @@ def test_todo(app, status, warning): assert set(todo[1].astext() for todo in todos) == set(['todo in foo', 'todo in bar']) -@with_app('html', testroot='ext-todo', freshenv=True, +@pytest.mark.sphinx('html', testroot='ext-todo', freshenv=True, confoverrides={'todo_include_todos': False, 'todo_emit_warnings': True}) def test_todo_not_included(app, status, warning): todos = [] diff --git a/tests/test_ext_viewcode.py b/tests/test_ext_viewcode.py index 93e681a5d..e4763119a 100644 --- a/tests/test_ext_viewcode.py +++ b/tests/test_ext_viewcode.py @@ -11,10 +11,10 @@ import re -from util import with_app +import pytest -@with_app(testroot='ext-viewcode') +@pytest.mark.sphinx(testroot='ext-viewcode') def test_viewcode(app, status, warning): app.builder.build_all() @@ -32,7 +32,7 @@ def test_viewcode(app, status, warning): assert result.count('href="_modules/spam/mod2.html#Class2"') == 2 -@with_app(testroot='ext-viewcode', tags=['test_linkcode']) +@pytest.mark.sphinx(testroot='ext-viewcode', tags=['test_linkcode']) def test_linkcode(app, status, warning): app.builder.build(['objects']) diff --git a/tests/test_highlighting.py b/tests/test_highlighting.py index 328abdf31..44a1cb3c1 100644 --- a/tests/test_highlighting.py +++ b/tests/test_highlighting.py @@ -16,8 +16,6 @@ from pygments.formatters.html import HtmlFormatter from sphinx.highlighting import PygmentsBridge -from util import with_app - class MyLexer(RegexLexer): name = 'testlexer' @@ -41,7 +39,6 @@ class ComplainOnUnhighlighted(PygmentsBridge): raise AssertionError("should highlight %r" % source) -@with_app() def test_add_lexer(app, status, warning): app.add_lexer('test', MyLexer()) diff --git a/tests/test_intl.py b/tests/test_intl.py index 9fe5a21eb..cb9d2cecf 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -19,8 +19,9 @@ from subprocess import Popen, PIPE from babel.messages import pofile from six import string_types +import pytest -from util import tempdir, rootdir, path, gen_with_app, with_app, SkipTest, \ +from util import tempdir, rootdir, path, gen_with_app, SkipTest, \ assert_re_search, assert_not_re_search, assert_in, assert_not_in, \ assert_startswith, assert_node, etree_parse, assert_equal @@ -845,7 +846,7 @@ def test_references(app, status, warning): yield assert_count(warning_expr, warnings, 0) -@with_app(buildername='dummy', testroot='image-glob', confoverrides={'language': 'xx'}) +@pytest.mark.sphinx('dummy', testroot='image-glob', confoverrides={'language': 'xx'}) def test_image_glob_intl(app, status, warning): app.builder.build_all() @@ -886,7 +887,7 @@ def test_image_glob_intl(app, status, warning): 'image/svg+xml': 'subdir/svgimg.xx.svg'}) -@with_app(buildername='dummy', testroot='image-glob', +@pytest.mark.sphinx('dummy', testroot='image-glob', confoverrides={'language': 'xx', 'figure_language_filename': u'{root}{ext}.{language}'}) def test_image_glob_intl_using_figure_language_filename(app, status, warning): diff --git a/tests/test_markup.py b/tests/test_markup.py index ec203447f..9bfb44e25 100644 --- a/tests/test_markup.py +++ b/tests/test_markup.py @@ -20,8 +20,9 @@ from sphinx.util import texescape from sphinx.util.docutils import sphinx_domains from sphinx.writers.html import HTMLWriter, SmartyPantsHTMLTranslator from sphinx.writers.latex import LaTeXWriter, LaTeXTranslator +import pytest -from util import TestApp, with_app, assert_node +from util import TestApp, assert_node app = settings = parser = domain_context = None @@ -152,7 +153,7 @@ def test_latex_escaping(): r'\\href{http://example.com/~me/}{test}.*') -@with_app(buildername='dummy', testroot='prolog') +@pytest.mark.sphinx('dummy', testroot='prolog') def test_rst_prolog(app, status, warning): app.builder.build_all() rst = pickle.loads((app.doctreedir / 'restructuredtext.doctree').bytes()) @@ -176,7 +177,7 @@ def test_rst_prolog(app, status, warning): assert not md.rawsource.endswith('*Good-bye world*.\n') -@with_app(buildername='dummy', testroot='keep_warnings') +@pytest.mark.sphinx('dummy', testroot='keep_warnings') def test_keep_warnings_is_True(app, status, warning): app.builder.build_all() doctree = pickle.loads((app.doctreedir / 'index.doctree').bytes()) @@ -185,7 +186,7 @@ def test_keep_warnings_is_True(app, status, warning): assert_node(doctree[0][1], nodes.system_message) -@with_app(buildername='dummy', testroot='keep_warnings', +@pytest.mark.sphinx('dummy', testroot='keep_warnings', confoverrides={'keep_warnings': False}) def test_keep_warnings_is_False(app, status, warning): app.builder.build_all() @@ -194,7 +195,7 @@ def test_keep_warnings_is_False(app, status, warning): assert len(doctree[0]) == 1 -@with_app(buildername='dummy', testroot='refonly_bullet_list') +@pytest.mark.sphinx('dummy', testroot='refonly_bullet_list') def test_compact_refonly_bullet_list(app, status, warning): app.builder.build_all() doctree = pickle.loads((app.doctreedir / 'index.doctree').bytes()) diff --git a/tests/test_metadata.py b/tests/test_metadata.py index 2bb1d746c..868b05139 100644 --- a/tests/test_metadata.py +++ b/tests/test_metadata.py @@ -12,10 +12,10 @@ # adapted from an example of bibliographic metadata at # http://docutils.sourceforge.net/docs/user/rst/demo.txt -from util import with_app +import pytest -@with_app('pseudoxml') +@pytest.mark.sphinx('pseudoxml') def test_docinfo(app, status, warning): """ Inspect the 'docinfo' metadata stored in the first node of the document. diff --git a/tests/test_search.py b/tests/test_search.py index fb7d47d6f..143a3db2b 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -15,8 +15,7 @@ from docutils.parsers import rst from sphinx.search import IndexBuilder from sphinx.util import jsdump - -from util import with_app +import pytest settings = parser = None @@ -58,7 +57,7 @@ def test_wordcollector(): assert 'fermion' in ix._mapping -@with_app(testroot='ext-viewcode') +@pytest.mark.sphinx(testroot='ext-viewcode') def test_objects_are_escaped(app, status, warning): app.builder.build_all() searchindex = (app.outdir / 'searchindex.js').text() @@ -68,7 +67,7 @@ def test_objects_are_escaped(app, status, warning): assert 'n::Array<T, d>' in index.get('objects').get('') # n::Array<T,d> is escaped -@with_app(testroot='search') +@pytest.mark.sphinx(testroot='search') def test_meta_keys_are_handled_for_language_en(app, status, warning): app.builder.build_all() searchindex = jsload(app.outdir / 'searchindex.js') @@ -81,7 +80,7 @@ def test_meta_keys_are_handled_for_language_en(app, status, warning): assert not is_registered_term(searchindex, 'onlytoogerman') -@with_app(testroot='search', confoverrides={'html_search_language': 'de'}) +@pytest.mark.sphinx(testroot='search', confoverrides={'html_search_language': 'de'}) def test_meta_keys_are_handled_for_language_de(app, status, warning): app.builder.build_all() searchindex = jsload(app.outdir / 'searchindex.js') @@ -94,14 +93,14 @@ def test_meta_keys_are_handled_for_language_de(app, status, warning): assert is_registered_term(searchindex, 'onlytoogerman') -@with_app(testroot='search') +@pytest.mark.sphinx(testroot='search') def test_stemmer_does_not_remove_short_words(app, status, warning): app.builder.build_all() searchindex = (app.outdir / 'searchindex.js').text() assert 'zfs' in searchindex -@with_app(testroot='search') +@pytest.mark.sphinx(testroot='search') def test_stemmer(app, status, warning): searchindex = jsload(app.outdir / 'searchindex.js') print(searchindex) @@ -109,7 +108,7 @@ def test_stemmer(app, status, warning): assert is_registered_term(searchindex, 'intern') -@with_app(testroot='search') +@pytest.mark.sphinx(testroot='search') def test_term_in_heading_and_section(app, status, warning): searchindex = (app.outdir / 'searchindex.js').text() # if search term is in the title of one doc and in the text of another @@ -119,7 +118,7 @@ def test_term_in_heading_and_section(app, status, warning): assert 'textinhead:0' in searchindex -@with_app(testroot='search') +@pytest.mark.sphinx(testroot='search') def test_term_in_raw_directive(app, status, warning): searchindex = jsload(app.outdir / 'searchindex.js') assert not is_registered_term(searchindex, 'raw') diff --git a/tests/test_templating.py b/tests/test_templating.py index 3cfb69ba2..aaca9d6bf 100644 --- a/tests/test_templating.py +++ b/tests/test_templating.py @@ -9,10 +9,10 @@ :license: BSD, see LICENSE for details. """ -from util import with_app +import pytest -@with_app('html', testroot='templating') +@pytest.mark.sphinx('html', testroot='templating') def test_layout_overloading(app, status, warning): app.builder.build_update() @@ -21,7 +21,7 @@ def test_layout_overloading(app, status, warning): assert '<!-- layout overloading -->' in result -@with_app('html', testroot='templating') +@pytest.mark.sphinx('html', testroot='templating') def test_autosummary_class_template_overloading(app, status, warning): app.builder.build_update() diff --git a/tests/test_theming.py b/tests/test_theming.py index a2ac046cd..ce207a519 100644 --- a/tests/test_theming.py +++ b/tests/test_theming.py @@ -20,8 +20,9 @@ from sphinx.theming import Theme, ThemeError from util import with_app, path -@with_app(confoverrides={'html_theme': 'ziptheme', - 'html_theme_options.testopt': 'foo'}) +@pytest.mark.sphinx( + confoverrides={'html_theme': 'ziptheme', + 'html_theme_options.testopt': 'foo'}) def test_theme_api(app, status, warning): cfg = app.config @@ -62,7 +63,7 @@ def test_theme_api(app, status, warning): assert not os.path.exists(themedir) -@with_app(testroot='tocdepth') # a minimal root +@pytest.mark.sphinx(testroot='tocdepth') # a minimal root def test_js_source(app, status, warning): # Now sphinx provides non-minified JS files for jquery.js and underscore.js # to clarify the source of the minified files. see also #1434. @@ -86,7 +87,7 @@ def test_js_source(app, status, warning): assert 'Underscore.js {v}'.format(v=v) in underscore_src, msg -@with_app(testroot='double-inheriting-theme') +@pytest.mark.sphinx(testroot='double-inheriting-theme') def test_double_inheriting_theme(make_app, app_params): from sphinx.theming import load_theme_plugins # load original before patching diff --git a/tests/test_toctree.py b/tests/test_toctree.py index 64cb8cfd6..441479882 100644 --- a/tests/test_toctree.py +++ b/tests/test_toctree.py @@ -8,11 +8,9 @@ :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ +import pytest -from util import with_app - - -@with_app(testroot='toctree-glob') +@pytest.mark.sphinx(testroot='toctree-glob') def test_relations(app, status, warning): app.builder.build_all() assert app.builder.relations['index'] == [None, None, 'foo'] |
