summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJensDiemer <git@jensdiemer.de>2020-10-17 22:53:17 +0200
committerJensDiemer <git@jensdiemer.de>2020-10-17 22:53:17 +0200
commit2ed3133be2e22f7f7e5bab2e31c2b9d8b6ef3ce3 (patch)
tree9a18ca133cf81a743beef500e807a05cac5f1fe2
parent55b4ce7e1a789ba90b3cd8c7c30e0217a9e93508 (diff)
downloadcreole-2ed3133be2e22f7f7e5bab2e31c2b9d8b6ef3ce3.tar.gz
Check if generated ReSt is valid
-rw-r--r--creole/setup_utils.py9
-rw-r--r--creole/tests/test_setup_utils.py23
-rw-r--r--pyproject.toml3
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 = "*"