Remove stray PR screenshots accidentally committed under docs/ (#1351)
PRs #738 and #644 committed their before/after review screenshots into the repo (docs/a11y/focus-*.png, docs/a11y/login-*.png, docs/gallery-314-*.png). Nothing references these files, so they only showed up as "random images" in the doc folder (issue #1335). The README hero image and the feature preview clips are referenced and are left untouched. Add tests/test_docs_no_orphan_images.py to guard against recurrence: it fails if any image under docs/ is referenced by no tracked text file. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 52 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 51 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 90 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 125 KiB |
64
tests/test_docs_no_orphan_images.py
Normal file
64
tests/test_docs_no_orphan_images.py
Normal file
@@ -0,0 +1,64 @@
|
||||
"""Regression guard for issue #1335 — PR review screenshots were committed into
|
||||
docs/ (docs/a11y/*.png from #738, docs/gallery-314-*.png from #644) where they
|
||||
served no purpose: nothing in the repo referenced them, so they just showed up
|
||||
as "random images" in the doc folder.
|
||||
|
||||
This test fails if any image under docs/ is orphaned — present in the tree but
|
||||
referenced by no tracked text file. The intended doc assets (the README hero
|
||||
image and the feature preview clips) are referenced, so they pass; a stray
|
||||
screenshot dropped in by a future PR would not.
|
||||
"""
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
REPO = Path(__file__).resolve().parent.parent
|
||||
IMAGE_EXTS = {".png", ".jpg", ".jpeg", ".gif", ".webp", ".bmp"}
|
||||
# Files a referenced image name could legitimately appear in.
|
||||
TEXT_EXTS = {".md", ".html", ".htm", ".js", ".ts", ".css", ".py", ".sh",
|
||||
".json", ".yml", ".yaml", ".txt"}
|
||||
|
||||
|
||||
def _tracked(paths_under):
|
||||
"""Git-tracked files under a path, or None if git isn't available."""
|
||||
try:
|
||||
out = subprocess.run(
|
||||
["git", "ls-files", paths_under],
|
||||
cwd=REPO, capture_output=True, text=True, timeout=30,
|
||||
)
|
||||
except (OSError, subprocess.SubprocessError):
|
||||
return None
|
||||
if out.returncode != 0:
|
||||
return None
|
||||
return [REPO / line for line in out.stdout.splitlines() if line.strip()]
|
||||
|
||||
|
||||
def test_no_orphan_images_in_docs():
|
||||
docs_images = _tracked("docs")
|
||||
if docs_images is None:
|
||||
pytest.skip("not a git checkout")
|
||||
docs_images = [p for p in docs_images if p.suffix.lower() in IMAGE_EXTS]
|
||||
assert docs_images, "expected docs/ to still contain referenced doc assets"
|
||||
|
||||
# All tracked text we might reference an image from.
|
||||
all_tracked = _tracked(".") or []
|
||||
haystack = []
|
||||
for p in all_tracked:
|
||||
if p.suffix.lower() not in TEXT_EXTS:
|
||||
continue
|
||||
try:
|
||||
haystack.append(p.read_text(encoding="utf-8", errors="ignore"))
|
||||
except OSError:
|
||||
continue
|
||||
blob = "\n".join(haystack)
|
||||
|
||||
orphans = [
|
||||
str(img.relative_to(REPO))
|
||||
for img in docs_images
|
||||
if img.name not in blob
|
||||
]
|
||||
assert not orphans, (
|
||||
"unreferenced image(s) committed under docs/ — likely PR screenshots "
|
||||
f"added by accident (see #1335): {orphans}"
|
||||
)
|
||||
Reference in New Issue
Block a user