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/>`_
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 tests/check_for_valid_readme.py {}", "--all",),
)
)


def test_args(args):
Expand Down
51 changes: 51 additions & 0 deletions tests/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."""
ffe4 marked this conversation as resolved.
Show resolved Hide resolved
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 f:
markup = f.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()
ffe4 marked this conversation as resolved.
Show resolved Hide resolved
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()
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