fix: exclude generated artifacts from wiki sync
This commit is contained in:
49
tests/test_gitea_sync_wiki.py
Normal file
49
tests/test_gitea_sync_wiki.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib.util
|
||||
import pathlib
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
|
||||
ROOT = pathlib.Path(__file__).resolve().parents[1]
|
||||
SCRIPT = ROOT / "tools" / "gitea" / "gitea-sync-wiki.py"
|
||||
TOOLS = SCRIPT.parent
|
||||
if str(TOOLS) not in sys.path:
|
||||
sys.path.insert(0, str(TOOLS))
|
||||
SPEC = importlib.util.spec_from_file_location("gitea_sync_wiki", SCRIPT)
|
||||
assert SPEC and SPEC.loader
|
||||
wiki_sync = importlib.util.module_from_spec(SPEC)
|
||||
sys.modules[SPEC.name] = wiki_sync
|
||||
SPEC.loader.exec_module(wiki_sync)
|
||||
|
||||
|
||||
class WikiSourceDiscoveryTests(unittest.TestCase):
|
||||
def test_generated_and_incidental_govoplan_files_are_not_docs(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
root = pathlib.Path(temporary)
|
||||
paths = {
|
||||
"readme": root / "README.md",
|
||||
"architecture": root / "docs" / "DATASOURCE_ARCHITECTURE.md",
|
||||
"plan": root / "workflow-plan.md",
|
||||
"audit": root / "audit-reports" / "full" / "manifest.json",
|
||||
"runtime": root / "runtime" / "release" / "manifest.json",
|
||||
"incidental": root / "tools" / "semgrep" / "govoplan.yml",
|
||||
"manifest": root / "manifest.json",
|
||||
}
|
||||
for path in paths.values():
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path.write_text("content\n", encoding="utf-8")
|
||||
|
||||
self.assertTrue(wiki_sync.is_repo_doc(root, paths["readme"]))
|
||||
self.assertTrue(wiki_sync.is_repo_doc(root, paths["architecture"]))
|
||||
self.assertTrue(wiki_sync.is_repo_doc(root, paths["plan"]))
|
||||
self.assertFalse(wiki_sync.is_repo_doc(root, paths["audit"]))
|
||||
self.assertFalse(wiki_sync.is_repo_doc(root, paths["runtime"]))
|
||||
self.assertFalse(wiki_sync.is_repo_doc(root, paths["incidental"]))
|
||||
self.assertFalse(wiki_sync.is_repo_doc(root, paths["manifest"]))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -27,12 +27,17 @@ EXCLUDED_PARTS = {
|
||||
".git",
|
||||
".gitea",
|
||||
".venv",
|
||||
".mypy_cache",
|
||||
".pytest_cache",
|
||||
".ruff_cache",
|
||||
"node_modules",
|
||||
"__pycache__",
|
||||
"audit-reports",
|
||||
"dist",
|
||||
"build",
|
||||
".cache",
|
||||
".module-test-build",
|
||||
"runtime",
|
||||
}
|
||||
EXCLUDED_NAMES = {
|
||||
"package-lock.json",
|
||||
@@ -40,6 +45,14 @@ EXCLUDED_NAMES = {
|
||||
"yarn.lock",
|
||||
"uv.lock",
|
||||
}
|
||||
REPO_DOC_NAME_TOKENS = {
|
||||
"architecture",
|
||||
"backlog",
|
||||
"plan",
|
||||
"roadmap",
|
||||
"todo",
|
||||
"workflow",
|
||||
}
|
||||
|
||||
|
||||
@dataclasses.dataclass(frozen=True)
|
||||
@@ -216,7 +229,8 @@ def is_repo_doc(repo_root_path: pathlib.Path, path: pathlib.Path) -> bool:
|
||||
return False
|
||||
if rel.parts[0] in {"docs", "doc", "codex"} and path.suffix.lower() in {".md", ".txt", ".csv"}:
|
||||
return True
|
||||
if re.search(r"(backlog|todo|roadmap|plan|architecture|workflow|manifest)", path.name, re.IGNORECASE):
|
||||
name_tokens = set(re.split(r"[^a-z0-9]+", path.stem.lower()))
|
||||
if name_tokens & REPO_DOC_NAME_TOKENS:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user