Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add test for package readme syntax errors #492

Merged
merged 12 commits into from
Mar 28, 2020
1 change: 1 addition & 0 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ sphinx-rtd-theme~=0.4
sphinx-autodoc-typehints~=1.10.2
pytest!=5.2.3
pytest-cov>=2.8
readme-renderer~=24.0
2 changes: 1 addition & 1 deletion ext/opentelemetry-ext-otcollector/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ OpenTelemetry Collector Exporter
.. |pypi| image:: https://badge.fury.io/py/opentelemetry-ext-otcollector.svg
:target: https://pypi.org/project/opentelemetry-ext-otcollector/

This library allows to export data to `OpenTelemetry Collector <https://github.com/open-telemetry/opentelemetry-collector/>`_ , currently using OpenCensus receiver in Collector side.
This library allows to export data to `OpenTelemetry Collector`_ , currently using OpenCensus receiver in Collector side.

Installation
------------
Expand Down
9 changes: 9 additions & 0 deletions ext/opentelemetry-ext-testutil/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
OpenTelemetry Test Utilities
============================

Test utilities for OpenTelemetry unit tests


References
----------
* `OpenTelemetry Project <https://opentelemetry.io/>`_
51 changes: 51 additions & 0 deletions scripts/check_for_valid_readme.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
"""Test script to check given paths for valid README.rst files."""
import argparse
import sys
from pathlib import Path

import readme_renderer.rst


def is_valid_rst(path):
"""Checks if RST can be rendered on PyPI."""
with open(path) as readme_file:
markup = readme_file.read()
return readme_renderer.rst.render(markup) is not None


def parse_args():
parser = argparse.ArgumentParser(
description="Checks README.rst file in path for syntax errors."
)
parser.add_argument(
"paths", nargs="+", help="paths containing a README.rst to test"
)
parser.add_argument("-v", "--verbose", action="store_true")
return parser.parse_args()


def main():
args = parse_args()
error = False

for path in map(Path, args.paths):
readme = path / "README.rst"
try:
if not is_valid_rst(readme):
error = True
print("FAILED: RST syntax errors in", readme)
continue
except FileNotFoundError:
error = True
print("FAILED: README.rst not found in", path)
continue
if args.verbose:
print("PASSED:", readme)

if error:
sys.exit(1)
print("All clear.")


if __name__ == "__main__":
main()
6 changes: 6 additions & 0 deletions scripts/eachdist.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,12 @@ def lint_args(args):
args, ("exec", "pylint {}", "--all", "--mode", "lintroots")
)
)
execute_args(
parse_subargs(
args,
("exec", "python scripts/check_for_valid_readme.py {}", "--all",),
)
)


def test_args(args):
Expand Down
1 change: 1 addition & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ deps =
isort
black
psutil
readme_renderer

commands_pre =
python scripts/eachdist.py install --editable
Expand Down