fix api docs cleanup

This commit is contained in:
WH-2099 2026-05-09 10:52:36 +08:00
parent bace060c6a
commit 35dcd1e07f
No known key found for this signature in database
2 changed files with 38 additions and 6 deletions

View File

@ -9,7 +9,6 @@ from __future__ import annotations
import argparse
import logging
import shutil
import subprocess
import sys
import tempfile
@ -116,11 +115,8 @@ def generate_markdown_docs(
(markdown_dir / STALE_COMBINED_MARKDOWN_FILENAME).unlink(missing_ok=True)
finally:
if not keep_swagger_json:
if swagger_dir == markdown_dir or markdown_dir.is_relative_to(swagger_dir):
for path in spec_paths:
path.unlink(missing_ok=True)
else:
shutil.rmtree(swagger_dir, ignore_errors=True)
for path in spec_paths:
path.unlink(missing_ok=True)
return written_paths

View File

@ -65,3 +65,39 @@ def test_generate_markdown_docs_keeps_split_docs_and_merges_fastopenapi_into_con
assert "#### Routes" in console_markdown
assert "FastOpenAPI Preview" not in (markdown_dir / "web-swagger.md").read_text(encoding="utf-8")
assert "FastOpenAPI Preview" not in (markdown_dir / "service-swagger.md").read_text(encoding="utf-8")
def test_generate_markdown_docs_only_removes_generated_specs_from_separate_swagger_dir(tmp_path, monkeypatch):
module = _load_generate_swagger_markdown_docs_module()
swagger_dir = tmp_path / "swagger"
markdown_dir = tmp_path / "markdown"
swagger_dir.mkdir()
existing_file = swagger_dir / "existing.txt"
existing_file.write_text("keep me", encoding="utf-8")
def write_specs(output_dir: Path) -> list[Path]:
output_dir.mkdir(parents=True, exist_ok=True)
paths = []
for target in module.SPEC_TARGETS:
path = output_dir / target.filename
path.write_text("{}", encoding="utf-8")
paths.append(path)
return paths
def write_fastopenapi_specs(output_dir: Path) -> list[Path]:
output_dir.mkdir(parents=True, exist_ok=True)
path = output_dir / module.FASTOPENAPI_SPEC_TARGETS[0].filename
path.write_text("{}", encoding="utf-8")
return [path]
def convert_spec_to_markdown(spec_path: Path, markdown_path: Path) -> None:
markdown_path.write_text(f"# {spec_path.stem}\n", encoding="utf-8")
monkeypatch.setattr(module, "generate_specs", write_specs)
monkeypatch.setattr(module, "generate_fastopenapi_specs", write_fastopenapi_specs)
monkeypatch.setattr(module, "_convert_spec_to_markdown", convert_spec_to_markdown)
module.generate_markdown_docs(swagger_dir, markdown_dir)
assert existing_file.read_text(encoding="utf-8") == "keep me"
assert not list(swagger_dir.glob("*.json"))