httpie-cli/tests/test_docs.py

70 lines
1.5 KiB
Python
Raw Normal View History

2014-04-24 14:07:31 +02:00
import os
import subprocess
from glob import glob
2019-12-04 18:09:51 +01:00
from pathlib import Path
2014-04-24 14:07:31 +02:00
2014-04-24 15:17:23 +02:00
import pytest
from .utils import TESTS_ROOT
2014-04-24 14:07:31 +02:00
SOURCE_DIRECTORIES = [
'extras',
'httpie',
'tests',
]
2014-04-24 14:07:31 +02:00
def has_docutils():
try:
# noinspection PyUnresolvedReferences,PyPackageRequirements
import docutils # noqa
2014-04-24 14:07:31 +02:00
return True
except ImportError:
return False
2014-04-25 10:41:04 +02:00
def rst_filenames():
cwd = os.getcwd()
os.chdir(TESTS_ROOT.parent)
try:
yield from glob('*.rst')
for directory in SOURCE_DIRECTORIES:
yield from glob(f'{directory}/**/*.rst', recursive=True)
finally:
os.chdir(cwd)
2014-04-24 14:07:31 +02:00
filenames = sorted(rst_filenames())
2014-04-25 10:41:04 +02:00
assert filenames
2014-04-24 14:07:31 +02:00
2014-04-25 10:41:04 +02:00
2019-12-04 18:09:51 +01:00
# HACK: hardcoded paths, venv should be irrelevant, etc.
2020-06-25 11:36:09 +02:00
# TODO: simplify by using the Python API instead of a subprocess
# then we wontt need the paths.
2019-12-04 18:09:51 +01:00
VENV_BIN = Path(__file__).parent.parent / 'venv/bin'
VENV_PYTHON = VENV_BIN / 'python'
VENV_RST2PSEUDOXML = VENV_BIN / 'rst2pseudoxml.py'
2020-06-25 11:36:09 +02:00
@pytest.mark.skipif(
not VENV_RST2PSEUDOXML.exists(),
reason='docutils not installed',
)
2014-04-25 10:41:04 +02:00
@pytest.mark.parametrize('filename', filenames)
def test_rst_file_syntax(filename):
2014-04-25 10:41:04 +02:00
p = subprocess.Popen(
2019-12-04 18:09:51 +01:00
[
VENV_PYTHON,
VENV_RST2PSEUDOXML,
'--report=1',
'--exit-status=1',
filename,
],
2015-10-22 19:32:16 +02:00
stderr=subprocess.PIPE,
stdout=subprocess.PIPE,
shell=True,
2014-04-25 10:41:04 +02:00
)
err = p.communicate()[1]
assert p.returncode == 0, err.decode('utf8')