fix(uploads): accept uppercase markdown companions (#6308)

Co-authored-by: haotianqi666 <250384991+haotianqi666@users.noreply.github.com>
This commit is contained in:
haotianqi666 2026-10-06 07:10:55 +08:00 committed by GitHub
parent c5b9964c25
commit aa7846823d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 1 deletions

View File

@ -87,7 +87,7 @@ def resolve_companion(original: Path) -> Path | None:
return None
data = json.loads(record.read_text(encoding="utf-8"))
name = data["markdown"]
if data["original"] != original.name or not isinstance(name, str) or Path(name).name != name or not name.endswith(".md"):
if data["original"] != original.name or not isinstance(name, str) or Path(name).name != name or Path(name).suffix.lower() != ".md":
return None
source_stat = original.stat(follow_symlinks=False)
# Legacy three-field records cannot establish whether an equal-size

View File

@ -32,6 +32,21 @@ def test_unchanged_source_keeps_companion_after_read(converted_upload):
assert extract_outline_for_file(original)[0] == [{"title": "Original A", "line": 1}]
def test_companion_record_accepts_uppercase_markdown_suffix(tmp_path):
uploads = tmp_path / "thread" / "user-data" / "uploads"
uploads.mkdir(parents=True)
original = uploads / "report.pdf"
markdown = uploads / "report.MD"
original.write_bytes(b"%PDF ORIGINAL A")
markdown.write_text("# Uppercase suffix\n", encoding="utf-8")
register_companion(original, markdown)
assert resolve_companion(original) == markdown
assert companion_names(original.parent) == {markdown.name}
assert extract_outline_for_file(original)[0] == [{"title": "Uppercase suffix", "line": 1}]
def test_same_size_sandbox_rewrite_rejects_stale_outline(converted_upload):
original, markdown = converted_upload
before = original.stat()