Files
libretro/tests/test_which_pack.py
T
Abdessamad Derraz a2fc09a89e feat: permanent download page per platform
get/<platform>/ lists the files of the current release pack, read from
release.json, or gives the command for a setup without one. The README,
setup pages, Get your files and the release notes link it instead of
asset URLs, which die with each deleted tag. Setups without a ZIP say so
with the command beside it, and validate_site checks every get/ page.
2026-10-23 17:06:51 +02:00

51 lines
2.0 KiB
Python

"""The Get your files page sends each platform to the pack built for it.
RetroPie's row linked the RetroArch pack, although a RetroPie pack is
published and carries 3916 files the RetroArch one does not.
"""
from __future__ import annotations
import re
import sys
import unittest
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(REPO_ROOT / "scripts"))
class WhichPackRows(unittest.TestCase):
"""Every row of the Get your files page links only its own pack.
The rows were written by hand and the RetroPie one sent readers to the
RetroArch pack. They are now built from each platform's registry key, and
this reads the rendered page to keep it so. The per-platform folder notes
that getting-started.md carried moved to each platform page, built by the
same key.
"""
def test_platform_rows_name_their_own_pack(self):
"""A row links its own get/ page, never another setup's and never a
release asset: the asset URL dies with its tag."""
import generate_site # noqa: PLC0415
import release_record # noqa: PLC0415
record = release_record.load_advertised()
page = generate_site.generate_which_pack()
row = re.compile(r"^\| \[[^\]]+\]\(platforms/([a-z0-9]+)\.md\) \|(.*)$", re.M)
get = re.compile(r'href="get/([a-z0-9]+)\.md"')
checked = 0
for key, rest in row.findall(page):
linked = set(get.findall(rest))
pack = release_record.pack_for(key, record)
with self.subTest(platform=key):
self.assertNotIn("/releases/download/", rest)
self.assertLessEqual(linked, {key})
if pack:
checked += 1
self.assertEqual(linked, {key})
elif not generate_site.has_release_pack(key):
self.assertIn(f"No ZIP. [Use the command](platforms/{key}.md#install).", rest)
self.assertGreater(checked, 3)