From bf4fcfd9143fac9721dc2950463d9925a3f30176 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 10 May 2019 08:57:07 +0200 Subject: [PATCH] Add tests to ensure that we documented all signals --- src/tests/doc/__init__.py | 0 src/tests/doc/test_signals.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/tests/doc/__init__.py create mode 100644 src/tests/doc/test_signals.py diff --git a/src/tests/doc/__init__.py b/src/tests/doc/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/tests/doc/test_signals.py b/src/tests/doc/test_signals.py new file mode 100644 index 000000000..66e01b177 --- /dev/null +++ b/src/tests/doc/test_signals.py @@ -0,0 +1,32 @@ +import glob +import importlib +import os +from contextlib import suppress + +import pytest +from django.conf import settings +from django.dispatch import Signal + +from pretix.base.signals import DeprecatedSignal + +here = os.path.dirname(__file__) +doc_dir = os.path.join(here, "../../../doc") + +plugin_docs = "" +for f in glob.glob(os.path.join(doc_dir, "development/api/*.rst")): + with open(f, "r") as doc_file: + plugin_docs += doc_file.read() + + +@pytest.mark.parametrize("app", settings.CORE_MODULES) +def test_documentation_includes_signals(app): + with suppress(ImportError): + module = importlib.import_module(app + ".signals") + missing = [] + for key in dir(module): + attrib = getattr(module, key) + if isinstance(attrib, Signal) and not isinstance(attrib, DeprecatedSignal): + if key not in plugin_docs: + missing.append(key) + + assert not missing, "The following signals are undocumented: %r" % missing