refactor: derive the spelling index from its table

The index of other system spellings was rebuilt only when the page
table changed length, so a table of the same size kept the previous
links. The builder now returns its table and set_system_page_map
installs it with the index derived from it.
This commit is contained in:
Abdessamad Derraz committed 2026-10-21 05:05:50 +02:00
1 parent c87c73d0a8
commit a0672d4459
3 files changed
+60 -37

No files matched your search

+22 -13
View File
@@ -69,31 +69,40 @@ class OtherSpellingsOfOneSystem(unittest.TestCase):
self.assertEqual(gs._system_emulators("sega-mega-drive", index), ["genesis_plus_gx"])
self.assertEqual(gs._system_emulators("nintendo-snes", index), [])
def _install(self, mapping: dict) -> None:
import siterender
saved = dict(siterender._system_page_map)
self.addCleanup(siterender.set_system_page_map, saved)
siterender.set_system_page_map(mapping)
def test_a_profile_spelling_links_to_the_platform_page(self):
import siterender
saved = dict(siterender._system_page_map)
self.addCleanup(lambda: (siterender._system_page_map.clear(),
siterender._system_page_map.update(saved)))
siterender._system_page_map.clear()
siterender._system_page_map["sega-mega-drive"] = ("sega", "Mega Drive")
self._install({"sega-mega-drive": ("sega", "Mega Drive")})
self.assertIn("systems/sega.md#mega-drive", siterender._system_link("sega-megadrive"))
siterender._system_page_map["megadrive"] = ("other", "Elsewhere")
self._install({"sega-mega-drive": ("sega", "Mega Drive"),
"megadrive": ("other", "Elsewhere")})
self.assertEqual(siterender._system_link("sega-megadrive"), "sega-megadrive")
def test_a_system_only_profiles_name_is_placed_by_their_files(self):
def test_a_table_of_the_same_size_replaces_the_other_spellings(self):
"""The index of other spellings was kept while the table kept its
length, so a second table of one entry linked to the first one's page."""
import siterender
saved = dict(siterender._system_page_map)
self.addCleanup(lambda: (siterender._system_page_map.clear(),
siterender._system_page_map.update(saved)))
siterender._system_page_map.clear()
self._install({"sega-mega-drive": ("sega", "Mega Drive")})
self.assertIn("systems/sega.md#", siterender._system_link("sega-megadrive"))
self._install({"sega-mega-drive": ("other", "Elsewhere")})
self.assertEqual(siterender._system_link("sega-megadrive"),
"[sega-megadrive](systems/other.md#elsewhere)")
def test_a_system_only_profiles_name_is_placed_by_their_files(self):
manufacturers = {"Commodore": {"PET": [{"name": "basic4.bin"}]}}
profiles = {"vice_xpet": {"systems": ["commodore-pet"],
"files": [{"name": "basic4.bin"}]}}
gs._build_system_page_map_from_data(
pages = gs._system_pages_from_data(
manufacturers, {}, {"files": {}, "indexes": {}}, profiles)
self.assertEqual(siterender._system_page_map["commodore-pet"], ("commodore", "PET"))
self.assertEqual(pages["commodore-pet"], ("commodore", "PET"))
class ACopyIsOnItsOwnFoldersPage(unittest.TestCase):