diff options
author | JensDiemer <git@jensdiemer.de> | 2020-10-17 22:53:17 +0200 |
---|---|---|
committer | JensDiemer <git@jensdiemer.de> | 2020-10-17 22:53:17 +0200 |
commit | 2ed3133be2e22f7f7e5bab2e31c2b9d8b6ef3ce3 (patch) | |
tree | 9a18ca133cf81a743beef500e807a05cac5f1fe2 | |
parent | 55b4ce7e1a789ba90b3cd8c7c30e0217a9e93508 (diff) | |
download | creole-2ed3133be2e22f7f7e5bab2e31c2b9d8b6ef3ce3.tar.gz |
Check if generated ReSt is valid
-rw-r--r-- | creole/setup_utils.py | 9 | ||||
-rw-r--r-- | creole/tests/test_setup_utils.py | 23 | ||||
-rw-r--r-- | pyproject.toml | 3 |
3 files changed, 33 insertions, 2 deletions
diff --git a/creole/setup_utils.py b/creole/setup_utils.py index 2089c70..7beccfd 100644 --- a/creole/setup_utils.py +++ b/creole/setup_utils.py @@ -19,6 +19,8 @@ import sys import warnings from pathlib import Path +from readme_renderer.rst import render + from creole import creole2html, html2rest from creole.shared.diff_utils import unified_diff from creole.shared.unknown_tags import raise_unknown_node, transparent_unknown_nodes @@ -115,6 +117,13 @@ def _generate_rst_readme(*, creole_readme_path): 'unknown_emit': raise_unknown_node # raise a error if a unknown node found } ) + + # Check if generated ReSt is valid, see also: + # https://pypi.org/help/#description-content-type + rendered = render(rest_readme, stream=sys.stderr) + if rendered is None: + sys.exit(1) + return rest_readme diff --git a/creole/tests/test_setup_utils.py b/creole/tests/test_setup_utils.py index bb482f4..24fe74f 100644 --- a/creole/tests/test_setup_utils.py +++ b/creole/tests/test_setup_utils.py @@ -1,6 +1,9 @@ +import tempfile from pathlib import Path -from creole.setup_utils import update_rst_readme +import pytest + +from creole.setup_utils import _generate_rst_readme, update_rst_readme from creole.tests.constants import CREOLE_PACKAGE_ROOT @@ -13,3 +16,21 @@ def test_update_rst_readme(capsys): assert captured.err == '' assert isinstance(rest_readme_path, Path) assert str(rest_readme_path).endswith('/README.rst') + + +def test_non_valid_readme(capsys): + with tempfile.NamedTemporaryFile() as fp: + path = Path(fp.name) + with path.open('w') as f: + f.write('= headline\n') + f.write('\n') + f.write('----\n') # << error ;) + + with pytest.raises(SystemExit): + _generate_rst_readme(creole_readme_path=path) + + captured = capsys.readouterr() + assert captured.out == '' + assert captured.err == ( + '<string>:5: (ERROR/3) Document or section may not begin with a transition.\n' + ) diff --git a/pyproject.toml b/pyproject.toml index d014cfb..a1d44fe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "python-creole" -version = "1.4.7" +version = "1.4.8" description = "python-creole is an open-source (GPL) markup converter in pure Python for: creole2html, html2creole, html2ReSt, html2textile" # Will be generated from README.creole with: "poetry run update_rst_readme" @@ -39,6 +39,7 @@ python = ">=3.6,<4.0.0" docutils = "*" [tool.poetry.dev-dependencies] +readme-renderer = "*" poetry-publish = "*" tox = "*" pygments = "*" |