57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
"""Docs versioning checks for operator-facing references."""
|
|
import json
|
|
import re
|
|
import tomllib
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from enodia_sentinel import __version__
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
DOCS = ROOT / "docs"
|
|
|
|
|
|
class TestDocsVersioning(unittest.TestCase):
|
|
def test_docs_version_matches_package_metadata(self):
|
|
pyproject = tomllib.loads((ROOT / "pyproject.toml").read_text())
|
|
package_version = pyproject["project"]["version"]
|
|
docs_version = json.loads((DOCS / "VERSION.json").read_text())
|
|
|
|
self.assertEqual(package_version, __version__)
|
|
self.assertEqual(docs_version["project"], "enodia-sentinel")
|
|
self.assertEqual(docs_version["package_version"], package_version)
|
|
self.assertEqual(docs_version["docs_version"], ".".join(package_version.split(".")[:2]))
|
|
self.assertEqual(docs_version["schema_generation"], "v1")
|
|
self.assertEqual(docs_version["command_reference"], "docs/COMMAND_REFERENCE.md")
|
|
self.assertEqual(docs_version["schema_reference"], "docs/SCHEMAS.md")
|
|
self.assertEqual(docs_version["packaging_reference"], "docs/PACKAGING.md")
|
|
self.assertEqual(docs_version["release_artifact_target"], "make release-artifacts")
|
|
|
|
def test_versioned_docs_headers_are_present(self):
|
|
version = json.loads((DOCS / "VERSION.json").read_text())
|
|
for name in ("INDEX.md", "COMMAND_REFERENCE.md", "SCHEMAS.md", "PACKAGING.md"):
|
|
with self.subTest(name=name):
|
|
text = (DOCS / name).read_text()
|
|
self.assertIn(
|
|
f"Applies to package version: `{version['package_version']}`",
|
|
text,
|
|
)
|
|
self.assertIn(f"Docs version: `{version['docs_version']}`", text)
|
|
self.assertIn(f"Schema generation: `{version['schema_generation']}`", text)
|
|
|
|
def test_readme_links_versioned_docs_index(self):
|
|
text = (ROOT / "README.md").read_text()
|
|
self.assertRegex(text, r"\[Documentation index\]\(docs/INDEX\.md\)")
|
|
|
|
def test_command_reference_is_manpage_style(self):
|
|
text = (DOCS / "COMMAND_REFERENCE.md").read_text()
|
|
commands = re.findall(r"^### `([^`]+)`", text, re.M)
|
|
self.assertGreaterEqual(len(commands), 8)
|
|
for phrase in ("Global options:", "Exit code:", "Expected use:"):
|
|
self.assertIn(phrase, text)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|