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)
Ejemplo n.º 8
0
# -*- 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)
Ejemplo n.º 9
0
# -*- 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())
Ejemplo n.º 12
0
# -*- 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())
Ejemplo n.º 13
0
"""
    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())
Ejemplo n.º 15
0
# -*- 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_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)
Ejemplo n.º 20
0
# -*- 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>'
Ejemplo n.º 22
0
# -*- 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)
Ejemplo n.º 23
0
# -*- 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')
Ejemplo n.º 24
0
# -*- 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_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)
Ejemplo n.º 26
0
# -*- 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)
Ejemplo n.º 28
0
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