62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
from pathlib import Path
|
|
|
|
from docforge.loaders import GriffeLoader, discover_module_paths
|
|
from docforge.renderers.mkdocs_renderer import MkDocsRenderer
|
|
|
|
|
|
def test_mkdocs_emits_all_modules(tmp_path: Path) -> None:
|
|
loader = GriffeLoader()
|
|
discovered_paths = discover_module_paths(
|
|
"docforge",
|
|
Path(r"C:\Users\vishe\WorkSpace\code\aetos\doc-forge")
|
|
)
|
|
project = loader.load_project(
|
|
discovered_paths
|
|
)
|
|
|
|
renderer = MkDocsRenderer()
|
|
renderer.generate_sources(project, tmp_path)
|
|
|
|
emitted = {
|
|
p.relative_to(tmp_path).as_posix()
|
|
for p in tmp_path.rglob("*.md")
|
|
}
|
|
|
|
module_paths = [m.path for m in project.get_all_modules()]
|
|
|
|
expected = set()
|
|
for path in module_paths:
|
|
parts = path.split(".")
|
|
# treat package as index.md if any other module is nested under it
|
|
is_package = any(
|
|
other != path and other.startswith(path + ".")
|
|
for other in module_paths
|
|
)
|
|
|
|
if is_package:
|
|
expected.add("/".join(parts) + "/index.md")
|
|
else:
|
|
expected.add("/".join(parts) + ".md")
|
|
|
|
# expected = {
|
|
# 'docforge/cli/main.md',
|
|
# 'docforge/renderers/index.md',
|
|
# 'docforge/loaders/index.md',
|
|
# 'docforge/models/index.md',
|
|
# 'docforge/nav/index.md',
|
|
# 'docforge/renderers/mkdocs.md',
|
|
# 'docforge/index.md',
|
|
# 'docforge/loaders/griffe_loader.md',
|
|
# 'docforge/models/object.md',
|
|
# 'docforge/cli/index.md',
|
|
# 'docforge/nav/resolver.md',
|
|
# 'docforge/renderers/base.md',
|
|
# 'docforge/nav/mkdocs.md',
|
|
# 'docforge/nav/spec.md',
|
|
# 'docforge/models/module.md',
|
|
# 'docforge/cli/mkdocs.md',
|
|
# 'docforge/models/project.md'
|
|
# }
|
|
missing = expected - emitted
|
|
assert not missing, f"Missing markdown files for modules: {missing}"
|