diff options
Diffstat (limited to 'tests/test_setup_command.py')
-rw-r--r-- | tests/test_setup_command.py | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/tests/test_setup_command.py b/tests/test_setup_command.py deleted file mode 100644 index 897718874..000000000 --- a/tests/test_setup_command.py +++ /dev/null @@ -1,141 +0,0 @@ -"""Test setup_command for distutils.""" - -import os -import subprocess -import sys -from collections import namedtuple -from textwrap import dedent - -import pytest - -import sphinx - -try: - from contextlib import chdir -except ImportError: - from sphinx.util.osutil import _chdir as chdir - - -@pytest.fixture() -def setup_command(request, tempdir, rootdir): - """ - Run `setup.py build_sphinx` with args and kwargs, - pass it to the test and clean up properly. - """ - marker = request.node.get_closest_marker('setup_command') - args = marker.args if marker else [] - - pkgrootdir = tempdir / 'test-setup' - (rootdir / 'test-setup').copytree(pkgrootdir) - - with chdir(pkgrootdir): - pythonpath = os.path.dirname(os.path.dirname(sphinx.__file__)) - if os.getenv('PYTHONPATH'): - pythonpath = os.getenv('PYTHONPATH') + os.pathsep + pythonpath - command = [sys.executable, 'setup.py', 'build_sphinx'] - command.extend(args) - - proc = subprocess.Popen( - command, - env=dict(os.environ, PYTHONPATH=pythonpath, PYTHONWARNINGS='default'), - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - yield namedtuple('setup', 'pkgroot,proc')(pkgrootdir, proc) - - -def test_build_sphinx(setup_command): - proc = setup_command.proc - out, err = proc.communicate() - print(out.decode()) - print(err.decode()) - assert proc.returncode == 0 - - -@pytest.mark.setup_command('-b', 'html,man') -def test_build_sphinx_multiple_builders(setup_command): - proc = setup_command.proc - out, err = proc.communicate() - print(out.decode()) - print(err.decode()) - assert proc.returncode == 0 - - -@pytest.mark.setup_command('-b', 'html,bar') -def test_build_sphinx_multiple_invalid_builders(setup_command): - proc = setup_command.proc - out, err = proc.communicate() - print(out.decode()) - print(err.decode()) - assert proc.returncode == 1 - - -@pytest.fixture() -def _nonascii_srcdir(request, setup_command): - mb_name = '\u65e5\u672c\u8a9e' - srcdir = (setup_command.pkgroot / 'doc') - try: - (srcdir / mb_name).makedirs() - except UnicodeEncodeError: - from sphinx.testing.path import FILESYSTEMENCODING - pytest.skip( - 'non-ASCII filename not supported on this filesystem encoding: ' - '%s' % FILESYSTEMENCODING) - - (srcdir / mb_name / (mb_name + '.txt')).write_text(dedent(""" - multi byte file name page - ========================== - """), encoding='utf8') - - root_doc = srcdir / 'index.txt' - root_doc.write_bytes((root_doc.read_text(encoding='utf8') + dedent(""" - .. toctree:: - - %(mb_name)s/%(mb_name)s - """ % locals())).encode()) - - -@pytest.mark.usefixtures('_nonascii_srcdir') -def test_build_sphinx_with_nonascii_path(setup_command): - proc = setup_command.proc - out, err = proc.communicate() - print(out.decode()) - print(err.decode()) - assert proc.returncode == 0 - - -@pytest.mark.setup_command('-b', 'linkcheck') -def test_build_sphinx_return_nonzero_status(setup_command): - srcdir = (setup_command.pkgroot / 'doc') - (srcdir / 'contents.txt').write_text( - 'http://localhost.unexistentdomain/index.html', - encoding='utf8') - proc = setup_command.proc - out, err = proc.communicate() - print(out.decode()) - print(err.decode()) - assert proc.returncode != 0, 'expect non-zero status for setup.py' - - -def test_build_sphinx_warning_return_zero_status(setup_command): - srcdir = (setup_command.pkgroot / 'doc') - (srcdir / 'contents.txt').write_text( - 'See :ref:`unexisting-reference-label`', - encoding='utf8') - proc = setup_command.proc - out, err = proc.communicate() - print(out.decode()) - print(err.decode()) - assert proc.returncode == 0 - - -@pytest.mark.setup_command('--warning-is-error') -def test_build_sphinx_warning_is_error_return_nonzero_status(setup_command): - srcdir = (setup_command.pkgroot / 'doc') - (srcdir / 'contents.txt').write_text( - 'See :ref:`unexisting-reference-label`', - encoding='utf8') - proc = setup_command.proc - out, err = proc.communicate() - print(out.decode()) - print(err.decode()) - assert proc.returncode != 0, 'expect non-zero status for setup.py' |