mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-20 10:23:16 -05:00
fix: read retropie targets the way retropie does
This commit is contained in:
1 parent
29a285d37e
commit
240a30f1d7
3 files changed
+727
-51
No files matched your search
@@ -60,5 +60,57 @@ class FailedRequestsStopTheScrape(unittest.TestCase):
|
||||
module.Scraper().fetch_targets()
|
||||
|
||||
|
||||
|
||||
class RetroPieModuleFlags(unittest.TestCase):
|
||||
"""The RetroPie target list read flags as requirements and libretro alone.
|
||||
|
||||
sdl1 and sdl2 are build options, not hardware: read as requirements they
|
||||
removed dosbox, atari800 and linapple from every target, and with only
|
||||
scriptmodules/libretrocores listed, no standalone package (openmsx,
|
||||
xroar, amiberry) reached a targeted pack at all.
|
||||
"""
|
||||
|
||||
def test_flags_follow_rp_register_module(self):
|
||||
available = retropie_targets_scraper._is_available
|
||||
cases = {
|
||||
("sdl1 !mali", "rpi4"): True,
|
||||
("!all videocore", "rpi3"): True,
|
||||
("!all videocore", "rpi4"): False,
|
||||
("!armv6 !videocore !:\\$__gcc_version:-lt:9", "rpi3"): False,
|
||||
("!armv6 !videocore !:\\$__gcc_version:-lt:9", "rpi4"): True,
|
||||
("!all x86", "rpi4"): False,
|
||||
("!all x86", "x86_64"): True,
|
||||
("!all arm rpi3 rpi4 rpi5 x86", "rpi1"): True,
|
||||
}
|
||||
for (flags, platform), expected in cases.items():
|
||||
with self.subTest(flags=flags, platform=platform):
|
||||
self.assertIs(available(flags, platform), expected)
|
||||
|
||||
def test_standalone_sections_are_listed_and_keep_their_id(self):
|
||||
listings = {
|
||||
"emulators": [{"name": "dosbox-staging.sh"}],
|
||||
"libretrocores": [{"name": "lr-beetle-psx.sh"}],
|
||||
"ports": [{"name": "openbor.sh"}],
|
||||
}
|
||||
modules = {
|
||||
"emulators/dosbox-staging.sh": 'rp_module_id="dosbox-staging"\nrp_module_flags="sdl2"',
|
||||
"libretrocores/lr-beetle-psx.sh": 'rp_module_id="lr-beetle-psx"',
|
||||
"ports/openbor.sh": 'rp_module_id="openbor"\nrp_module_flags="sdl1 !mali !x11"',
|
||||
}
|
||||
|
||||
def fake_fetch(url, accept="text/plain"):
|
||||
import json
|
||||
|
||||
section = url.rstrip("/").rsplit("/", 1)[-1]
|
||||
if section in listings:
|
||||
return json.dumps(listings[section])
|
||||
return modules[url.split("scriptmodules/", 1)[1]]
|
||||
|
||||
with mock.patch.object(retropie_targets_scraper, "_fetch", fake_fetch):
|
||||
targets = retropie_targets_scraper.Scraper().fetch_targets()["targets"]
|
||||
self.assertEqual(targets["rpi4"]["cores"], ["beetle_psx", "dosbox-staging", "openbor"])
|
||||
self.assertEqual(targets["x86_64"]["cores"], ["beetle_psx", "dosbox-staging"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user