summaryrefslogtreecommitdiff
path: root/tests/test_apidoc.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_apidoc.py')
-rw-r--r--tests/test_apidoc.py192
1 files changed, 84 insertions, 108 deletions
diff --git a/tests/test_apidoc.py b/tests/test_apidoc.py
index ff6a147ca..d44868aeb 100644
--- a/tests/test_apidoc.py
+++ b/tests/test_apidoc.py
@@ -11,45 +11,60 @@
from __future__ import print_function
-import sys
-from six import PY2
+from collections import namedtuple
-from sphinx import apidoc
+import pytest
-from util import with_tempdir, with_app, rootdir
+from sphinx.apidoc import main as apidoc_main
+from util import rootdir, remove_unicode_literals
-@with_tempdir
-def test_simple(tempdir):
- codedir = rootdir / 'root'
+
+@pytest.fixture()
+def apidoc(tempdir, apidoc_params):
+ _, kwargs = apidoc_params
+ coderoot = kwargs.get('coderoot', (rootdir / 'root'))
outdir = tempdir / 'out'
- args = ['sphinx-apidoc', '-o', outdir, '-F', codedir]
- apidoc.main(args)
+ args = ['sphinx-apidoc', '-o', outdir, '-F', coderoot] + kwargs.get('options', [])
+ apidoc_main(args)
+ return namedtuple('apidoc', 'coderoot,outdir')(coderoot, outdir)
+
+
+@pytest.fixture
+def apidoc_params(request):
+ markers = request.node.get_marker("apidoc")
+ pargs = {}
+ kwargs = {}
+
+ if markers is not None:
+ for info in reversed(list(markers)):
+ for i, a in enumerate(info.args):
+ pargs[i] = a
+ kwargs.update(info.kwargs)
+ args = [pargs[i] for i in sorted(pargs.keys())]
+ return args, kwargs
+
+
+@pytest.mark.apidoc(coderoot=(rootdir / 'root'))
+def test_simple(make_app, apidoc):
+ outdir = apidoc.outdir
assert (outdir / 'conf.py').isfile()
assert (outdir / 'autodoc_fodder.rst').isfile()
assert (outdir / 'index.rst').isfile()
- @with_app('text', srcdir=outdir)
- def assert_build(app, status, warning):
- app.build()
- print(status.getvalue())
- print(warning.getvalue())
-
- sys.path.append(codedir)
- try:
- assert_build()
- finally:
- sys.path.remove(codedir)
-
+ app = make_app('text', srcdir=outdir)
+ app.build()
+ print(app._status.getvalue())
+ print(app._warning.getvalue())
-@with_tempdir
-def test_pep_0420_enabled(tempdir):
- codedir = rootdir / 'root' / 'pep_0420'
- outdir = tempdir / 'out'
- args = ['sphinx-apidoc', '-o', outdir, '-F', codedir, "--implicit-namespaces"]
- apidoc.main(args)
+@pytest.mark.apidoc(
+ coderoot=(rootdir / 'root' / 'pep_0420'),
+ options=["--implicit-namespaces"],
+)
+def test_pep_0420_enabled(make_app, apidoc):
+ outdir = apidoc.outdir
assert (outdir / 'conf.py').isfile()
assert (outdir / 'a.b.c.rst').isfile()
assert (outdir / 'a.b.x.rst').isfile()
@@ -66,49 +81,28 @@ def test_pep_0420_enabled(tempdir):
assert "automodule:: a.b.x.y\n" in rst
assert "automodule:: a.b.x\n" not in rst
- @with_app('text', srcdir=outdir)
- def assert_build(app, status, warning):
- app.build()
- print(status.getvalue())
- print(warning.getvalue())
-
- sys.path.append(codedir)
- try:
- assert_build()
- finally:
- sys.path.remove(codedir)
+ app = make_app('text', srcdir=outdir)
+ app.build()
+ print(app._status.getvalue())
+ print(app._warning.getvalue())
-@with_tempdir
-def test_pep_0420_disabled(tempdir):
- codedir = rootdir / 'root' / 'pep_0420'
- outdir = tempdir / 'out'
- args = ['sphinx-apidoc', '-o', outdir, '-F', codedir]
- apidoc.main(args)
-
+@pytest.mark.apidoc(coderoot=(rootdir / 'root' / 'pep_0420'))
+def test_pep_0420_disabled(make_app, apidoc):
+ outdir = apidoc.outdir
assert (outdir / 'conf.py').isfile()
assert not (outdir / 'a.b.c.rst').exists()
assert not (outdir / 'a.b.x.rst').exists()
- @with_app('text', srcdir=outdir)
- def assert_build(app, status, warning):
- app.build()
- print(status.getvalue())
- print(warning.getvalue())
-
- sys.path.append(codedir)
- try:
- assert_build()
- finally:
- sys.path.remove(codedir)
-
-@with_tempdir
-def test_pep_0420_disabled_top_level_verify(tempdir):
- codedir = rootdir / 'root' / 'pep_0420' / 'a' / 'b'
- outdir = tempdir / 'out'
- args = ['sphinx-apidoc', '-o', outdir, '-F', codedir]
- apidoc.main(args)
+ app = make_app('text', srcdir=outdir)
+ app.build()
+ print(app._status.getvalue())
+ print(app._warning.getvalue())
+
+@pytest.mark.apidoc(coderoot=(rootdir / 'root' / 'pep_0420' / 'a' / 'b'))
+def test_pep_0420_disabled_top_level_verify(make_app, apidoc):
+ outdir = apidoc.outdir
assert (outdir / 'conf.py').isfile()
assert (outdir / 'c.rst').isfile()
assert not (outdir / 'x.rst').exists()
@@ -119,53 +113,35 @@ def test_pep_0420_disabled_top_level_verify(tempdir):
assert "automodule:: c.d\n" in rst
assert "automodule:: c\n" in rst
- @with_app('text', srcdir=outdir)
- def assert_build(app, status, warning):
- app.build()
- print(status.getvalue())
- print(warning.getvalue())
-
- sys.path.append(codedir)
- try:
- assert_build()
- finally:
- sys.path.remove(codedir)
-
-@with_tempdir
-def test_multibyte_parameters(tempdir):
- codedir = rootdir / 'root'
- outdir = tempdir / 'out'
- args = ['sphinx-apidoc', '-o', outdir, '-F', codedir,
- '--doc-project', u'プロジェクト名'.encode('utf-8'),
- '--doc-author', u'著者名'.encode('utf-8'),
- '--doc-version', u'バージョン'.encode('utf-8'),
- '--doc-release', u'リリース'.encode('utf-8')]
- apidoc.main(args)
-
+ app = make_app('text', srcdir=outdir)
+ app.build()
+ print(app._status.getvalue())
+ print(app._warning.getvalue())
+
+
+@pytest.mark.apidoc(
+ coderoot=(rootdir / 'root'),
+ options=[
+ '--doc-project', u'プロジェクト名'.encode('utf-8'),
+ '--doc-author', u'著者名'.encode('utf-8'),
+ '--doc-version', u'バージョン'.encode('utf-8'),
+ '--doc-release', u'リリース'.encode('utf-8'),
+ ],
+)
+def test_multibyte_parameters(make_app, apidoc):
+ outdir = apidoc.outdir
assert (outdir / 'conf.py').isfile()
assert (outdir / 'autodoc_fodder.rst').isfile()
assert (outdir / 'index.rst').isfile()
conf_py = (outdir / 'conf.py').text()
- if PY2:
- assert u"project = u'プロジェクト名'" in conf_py
- assert u"author = u'著者名'" in conf_py
- assert u"version = u'バージョン'" in conf_py
- assert u"release = u'リリース'" in conf_py
- else:
- assert u"project = 'プロジェクト名'" in conf_py
- assert u"author = '著者名'" in conf_py
- assert u"version = 'バージョン'" in conf_py
- assert u"release = 'リリース'" in conf_py
-
- @with_app('text', srcdir=outdir)
- def assert_build(app, status, warning):
- app.build()
- print(status.getvalue())
- print(warning.getvalue())
-
- sys.path.append(codedir)
- try:
- assert_build()
- finally:
- sys.path.remove(codedir)
+ conf_py_ = remove_unicode_literals(conf_py)
+ assert u"project = 'プロジェクト名'" in conf_py_
+ assert u"author = '著者名'" in conf_py_
+ assert u"version = 'バージョン'" in conf_py_
+ assert u"release = 'リリース'" in conf_py_
+
+ app = make_app('text', srcdir=outdir)
+ app.build()
+ print(app._status.getvalue())
+ print(app._warning.getvalue())