def test_basic(self): srcdir = path(__file__).dirname() / 'basic' tree = ET.parse(path(__file__).dirname() / 'doxygen' / 'Example.xml') root = tree.getroot() link = '<a class="reference external" ' \ 'href="http://example.com/doc/%s">%s</a>' @with_app(buildername='html', srcdir=srcdir, warningiserror=True) def execute(app, status, warning): app.build() contents = (app.outdir / 'contents.html').read_text() symbols = { 'Example': 'Regular class', 'Example::ANSWER': 'Regular class constant', 'Example::$publicMember': 'Regular class member', 'Example::$publicStaticMember': 'Regular static class member', 'Example::publicMethod': 'Regular class method', 'Example::publicStaticMethod': 'Regular static class method', 'Namespaced': 'Namespace', 'Namespaced\\Example': 'Namespaced class', 'Namespaced\\Example::ANSWER': 'Namespaced class constant', 'Namespaced\\Example::$publicMember': 'Namespaced class member', 'Namespaced\\Example::$publicStaticMember': 'Namespaced static class member', 'Namespaced\\Example::publicMethod': 'Namespaced class method', 'Namespaced\\Example::publicStaticMethod': 'Namespaced static class method', } for (name, url) in self._iter_objects(root): if name not in symbols: continue self.assertIn(link % (url, symbols[name]), contents) execute()
# -*- coding: utf-8 -*- """ test_filter_syntax_error ~~~~~~~~~~~~~~~~~~~~~~~~ Test response on syntax errors in filter. """ import nose.tools import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('filter_syntax_error').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir) def test_filter_syntax_error(app, status, warning): app.builder.build_all() nose.tools.assert_equal( len(re.findall( 'syntax error in :filter: expression', warning.getvalue())), 9)
# -*- coding: utf-8 -*- """ test_list_citation ~~~~~~~~~~~~~~~~~~ Test the ``:list: citation`` option. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('list_citation').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_list_citation(app, status, warning): app.builder.build_all() output = (app.outdir / "contents.html").read_text() assert re.search( '<p id="bibtex-bibliography-contents-0">' '.*<tr><td class="label">.*\\[1\\].*</td><td>.*Akkerdju.*</td></tr>' '.*<tr><td class="label">.*\\[2\\].*</td><td>.*Bro.*</td></tr>' '.*<tr><td class="label">.*\\[3\\].*</td><td>.*Chap.*</td></tr>' '.*<tr><td class="label">.*\\[4\\].*</td><td>.*Dude.*</td></tr>' '.*</p>', output, re.MULTILINE | re.DOTALL)
# -*- coding: utf-8 -*- """ test_list_invalid ~~~~~~~~~~~~~~~~~ Test invalid ``:list:`` option. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('list_invalid').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir) def test_list_invalid(app, status, warning): app.builder.build_all() assert re.search( "unknown bibliography list type 'thisisintentionallyinvalid'", warning.getvalue())
# -*- coding: utf-8 -*- """ test_list_bullet ~~~~~~~~~~~~~~~~ Test the ``:list: bullet`` option. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath("list_bullet").abspath() def teardown_module(): (srcdir / "_build").rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_list_bullet(app, status, warning): app.builder.build_all() output = (app.outdir / "contents.html").read_text() assert re.search( '<ul .* id="bibtex-bibliography-contents-0">' ".*<li>.*Akkerdju.*</li>" ".*<li>.*Bro.*</li>" ".*<li>.*Chap.*</li>" ".*<li>.*Dude.*</li>" ".*</ul>", output,
# -*- coding: utf-8 -*- """ test_filter_fix_author_keyerror ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Test for a bug in the filter option. """ from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath( 'filter_fix_author_keyerror').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_filter_fix_author_keyerror(app, status, warning): app.builder.build_all()
# -*- coding: utf-8 -*- """ test_latex_refs ~~~~~~~~~~~~~~~ Check that LaTeX backend produces correct references. """ import re import sphinx from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('latex_refs').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True, buildername='latex') def test_latex_refs(app, status, warning): app.builder.build_all() output = (app.outdir / "test.tex").read_text(encoding='utf-8') if sphinx.version_info >= (1, 8): assert r'\sphinxcite{contents:huygens}' in output assert r'\bibitem[Huy57]{contents:huygens}' in output else: assert re.search( r'\\hyperref\[(\\detokenize{)?contents:huygens(})?\]', output) assert re.search( r'\\label{(\\detokenize{)?contents:huygens(})?}}', output)
# -*- coding: utf-8 -*- """ test_filter ~~~~~~~~~~~ Test filter option. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('filter').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_filter(app, status, warning): app.builder.build_all() output = (app.outdir / "contents.html").read_text(encoding='utf-8') assert re.search('Tralalala', output) assert not re.search('ideetje', output) assert not re.search('Jakkamakka', output) output = (app.outdir / "or.html").read_text(encoding='utf-8') assert not re.search('Tralalala', output) assert re.search('ideetje', output) assert re.search('Jakkamakka', output) output = (app.outdir / "noteq.html").read_text(encoding='utf-8') assert re.search('Tralalala', output)
# -*- coding: utf-8 -*- """ test_custom_style ~~~~~~~~~~~~~~~~~ Test a custom style. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('custom_style').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_custom_style(app, status, warning): app.builder.build_all() output = (app.outdir / "contents.html").read_text(encoding='utf-8') # the custom style suppresses web links assert not re.search('http://arxiv.org', output) assert not re.search('http://dx.doi.org', output)
# -*- coding: utf-8 -*- """ test_bibfilenotfound ~~~~~~~~~~~~~~~~~~~~ Bib file not found check. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('bibfilenotfound').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir) def test_bibfilenotfound(app, status, warning): app.builder.build_all() assert re.search( 'could not open bibtex file .*unknown[.]bib', warning.getvalue())
# -*- coding: utf-8 -*- """ test_citationnotfound ~~~~~~~~~~~~~~~~~~~~~ Citation not found check. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('citationnotfound').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir) def test_citationnotfound(app, status, warning): app.builder.build_all() assert re.search('citation not found: nosuchkey', warning.getvalue())
# -*- coding: utf-8 -*- """ test_bibfilenotfound ~~~~~~~~~~~~~~~~~~~~ Bib file not found check. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('bibfilenotfound').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir) def test_bibfilenotfound(app, status, warning): app.builder.build_all() assert re.search('could not open bibtex file .*unknown[.]bib', warning.getvalue())
""" test_crossref ~~~~~~~~~~~~~ Test that cross references work. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('crossref').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_crossref(app, status, warning): app.builder.build_all() # default style is plain; check output output = (app.outdir / "contents.html").read_text(encoding='utf-8') # ensure Zaf is cited assert len(re.findall('\\[Zaf\\]', output)) == 2 # ensure proceedings only mentioned for Zaf assert len( re.findall( 'Proceedings of the Second International Symposium ' 'on Imprecise Probabilities and Their Applications', output)) == 1
# -*- coding: utf-8 -*- """ test_invalid_cite_option ~~~~~~~~~~~~~~~~~~~~~~~~ Test behaviour when invalid cite option is given. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('invalid_cite_option').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir) def test_invalid_cite_option(app, status, warning): app.builder.build_all() assert re.search( 'unknown option: "thisisintentionallyinvalid"', warning.getvalue())
# -*- coding: utf-8 -*- """ test_issue1 ~~~~~~~~~~~ Test Tinkerer and check output. """ import nose.tools from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath("issue1").abspath() def teardown_module(): (srcdir / "_build").rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_tinker(app, status, warning): app.builder.build_all() nose.tools.assert_equal(app.env.bibtex_cache.get_cited_docnames(u"2011:BabikerIPv6"), {u"2012/07/24/hello_world_"}) nose.tools.assert_equal(app.env.bibtex_cache.get_label_from_key(u"2011:BabikerIPv6"), u"BNC11")
# -*- coding: utf-8 -*- """ test_bibfile_out_of_date ~~~~~~~~~~~~~~~~~~~~~~~~ Test that updates to the bibfile generate the correct result when Sphinx is run again. """ import shutil import re import time from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('bibfile_out_of_date').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) (srcdir / 'test.bib').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_encoding(app, status, warning): shutil.copyfile((srcdir / 'test_old.bib'), (srcdir / 'test.bib')) app.builder.build_all() output = (app.outdir / "contents.html").read_text() assert re.search( '<p id="bibtex-bibliography-contents-0">' '.*<tr><td class="label">\\[1\\]</td><td>.*Akkerdju.*</td></tr>' '.*<tr><td class="label">\\[2\\]</td><td>.*Bro.*</td></tr>'
# -*- coding: utf-8 -*- """ test_list_enumerated ~~~~~~~~~~~~~~~~~~~~ Test the ``:list: enumerated`` option. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('list_enumerated').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_list_enumerated(app, status, warning): app.builder.build_all() output = (app.outdir / "contents.html").read_text() assert re.search( '<ol .*id="bibtex-bibliography-contents-0".* start="1".*>' '.*<li>.*Akkerdju.*</li>' '.*<li>.*Bro.*</li>' '.*<li>.*Chap.*</li>' '.*<li>.*Dude.*</li>' '.*</ol>' '.*<ol .*id="bibtex-bibliography-contents-1".* start="5".*>'
# -*- coding: utf-8 -*- """ test_filter_option_clash ~~~~~~~~~~~~~~~~~~~~~~~~ Test filter option clash with all, cited, and notcited. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('filter_option_clash').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir) def test_filter_option_clash(app, status, warning): app.builder.build_all() warnings = warning.getvalue() assert re.search(':filter: overrides :all:', warnings) assert re.search(':filter: overrides :cited:', warnings) assert re.search(':filter: overrides :notcited:', warnings)
# -*- coding: utf-8 -*- """ test_sphinx ~~~~~~~~~~~ General Sphinx test and check output. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('sphinx').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir) def test_sphinx(app, status, warning): app.builder.build_all() warnings = warning.getvalue() assert re.search(u'could not relabel citation \\[Test01\\]', warnings) assert re.search(u'could not relabel citation \\[Test02\\]', warnings) assert re.search(u'could not relabel citation \\[Wa04\\]', warnings) assert re.search( u'could not relabel citation reference \\[Test01\\]', warnings) assert re.search( u'could not relabel citation reference \\[Test02\\]',
# -*- coding: utf-8 -*- """ test_bibfile_out_of_date ~~~~~~~~~~~~~~~~~~~~~~~~ Test that updates to the bibfile generate the correct result when Sphinx is run again. """ import shutil import re import time from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('bibfile_out_of_date').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) (srcdir / 'test.bib').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_encoding(app, status, warning): shutil.copyfile((srcdir / 'test_old.bib'), (srcdir / 'test.bib')) app.builder.build_all() output = (app.outdir / "contents.html").read_text() assert re.search( '<p id="bibtex-bibliography-contents-0">' '.*<tr><td class="label">\\[1\\]</td><td>.*Akkerdju.*</td></tr>'
# -*- coding: utf-8 -*- """ test_latex_refs ~~~~~~~~~~~~~~~ Check that LaTeX backend produces correct references. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('latex_refs').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True, buildername='latex') def test_latex_refs(app, status, warning): app.builder.build_all() output = (app.outdir / "test.tex").read_text(encoding='utf-8') assert re.search('\\\\hyperref\[(\\\\detokenize{)?contents:huygens(})?\]', output) assert re.search('\\\\label{(\\\\detokenize{)?contents:huygens(})?}}', output)
# -*- coding: utf-8 -*- """ test_filter ~~~~~~~~~~~ Test filter option. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('filter').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_filter(app, status, warning): app.builder.build_all() output = (app.outdir / "contents.html").read_text(encoding='utf-8') assert re.search('Tralalala', output) assert not re.search('ideetje', output) assert not re.search('Jakkamakka', output) output = (app.outdir / "or.html").read_text(encoding='utf-8') assert not re.search('Tralalala', output) assert re.search('ideetje', output) assert re.search('Jakkamakka', output) output = (app.outdir / "noteq.html").read_text(encoding='utf-8')
# -*- coding: utf-8 -*- """ test_issue14_2 ~~~~~~~~~~~~~~ Test labelprefix option. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('issue14_2').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_label_prefix(app, status, warning): app.builder.build_all() output = (app.outdir / "doc1.html").read_text(encoding='utf-8') assert re.search('<td class="label">.*\\[A1\\].*</td>', output) output = (app.outdir / "doc2.html").read_text(encoding='utf-8') assert re.search('<td class="label">.*\\[B1\\].*</td>', output)
# -*- coding: utf-8 -*- """ test_custom_style ~~~~~~~~~~~~~~~~~ Test a custom style. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('custom_style').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_custom_style(app, status, warning): app.builder.build_all() output = (app.outdir / "contents.html").read_text() # the custom style suppresses web links assert not re.search('http://arxiv.org', output) assert not re.search('http://dx.doi.org', output)
# -*- coding: utf-8 -*- """ test_issue61 ~~~~~~~~~~~~ Test multiple keys in a single cite. """ import re from sphinx_testing.util import path, with_app srcdir = path(__file__).dirname().joinpath('issue61').abspath() def teardown_module(): (srcdir / '_build').rmtree(True) @with_app(srcdir=srcdir, warningiserror=True) def test_multiple_keys(app, status, warning): app.builder.build_all() output = (app.outdir / "contents.html").read_text(encoding='utf-8') assert re.search('class="reference internal" href="#testone"', output) assert re.search('class="reference internal" href="#testtwo"', output)
def test_issue77(app, status, warning): app.builder.build_all() output = (path(app.outdir) / "index.html").read_text(encoding='utf-8') assert len(re.findall('\\[APAa\\]', output)) == 1 assert len(re.findall('\\[APAb\\]', output)) == 1