mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-23 20:29:06 -05:00
fix: detect Batocera and Knulli by build files
No Batocera build writes /etc/batocera-version: batocera-system.mk:21-22 (batocera.linux 38845725, unchanged since batocera-30) writes /usr/share/batocera/batocera.version. Knulli (knulli-linux 57afa662) adds OS_NAME=knulli to os-release, writes /usr/share/knulli/knulli.version and removes /usr/share/batocera, and no Knulli source writes /etc/knulli-release. Neither was detected. A Knulli board is named and not narrowed by Batocera's per-board lists, and an unlisted board is named.
This commit is contained in:
1 parent
edda080c59
commit
89c533e9ba
6 files changed
+102
-15
No files matched your search
+40
-1
@@ -1028,7 +1028,8 @@ class DetectionFollowsTheRegistry(unittest.TestCase):
|
||||
with unittest.mock.patch.object(install, "_parse_os_release", return_value={}), \
|
||||
unittest.mock.patch.object(
|
||||
Path, "exists",
|
||||
lambda p: str(p) in ("/etc/knulli-release", "/etc/batocera-version"),
|
||||
lambda p: str(p) in ("/usr/share/knulli/knulli.version",
|
||||
"/usr/share/batocera/batocera.version"),
|
||||
):
|
||||
self.assertEqual(install._detect_embedded(), [("batocera", Path("/userdata/bios"))])
|
||||
# What ROCKNIX writes since 2025: OS_NAME and HW_DEVICE, no ID.
|
||||
@@ -3952,5 +3953,43 @@ class MuOsIsReadFromItsRetroArchConfig(unittest.TestCase):
|
||||
self.assertEqual(rule[3], "/run/muos/storage/bios")
|
||||
|
||||
|
||||
class BatoceraAndKnulliByWhatTheirBuildsWrite(unittest.TestCase):
|
||||
"""No Batocera build writes /etc/batocera-version (batocera-system.mk
|
||||
writes /usr/share/batocera/batocera.version), and Knulli writes no
|
||||
/etc/knulli-release and removes /usr/share/batocera: neither was
|
||||
detected, and a Knulli board got every board's files without a word."""
|
||||
|
||||
def _detect(self, release: dict, files: tuple[str, ...]):
|
||||
with unittest.mock.patch.object(install, "_parse_os_release", return_value=release), \
|
||||
unittest.mock.patch.object(Path, "exists", lambda p: str(p) in files):
|
||||
return install._detect_embedded()
|
||||
|
||||
def test_batocera_by_its_version_file(self):
|
||||
self.assertEqual(self._detect({}, ("/usr/share/batocera/batocera.version",)),
|
||||
[("batocera", Path("/userdata/bios"))])
|
||||
self.assertEqual(self._detect({}, ("/etc/batocera-version",)), [])
|
||||
|
||||
def test_knulli_by_its_os_release_or_version_file(self):
|
||||
self.assertEqual(self._detect({"OS_NAME": "knulli"}, ()),
|
||||
[("batocera", Path("/userdata/bios"))])
|
||||
self.assertEqual(self._detect({}, ("/usr/share/knulli/knulli.version",)),
|
||||
[("batocera", Path("/userdata/bios"))])
|
||||
|
||||
def test_a_knulli_board_is_named_and_not_narrowed(self):
|
||||
board = Path(_tempdir(self)) / "knulli.arch"
|
||||
board.write_text("a133")
|
||||
with unittest.mock.patch.dict(install._DERIVATIVE_BOARDS,
|
||||
{"batocera": ("Knulli", str(board))}):
|
||||
self.assertEqual(install.derivative_board("batocera"), ("Knulli", "a133"))
|
||||
self.assertIsNone(install.derivative_board("recalbox"))
|
||||
|
||||
def test_the_run_says_why_every_board_is_installed(self):
|
||||
source = (REPO_ROOT / "install.py").read_text(encoding="utf-8")
|
||||
block = source[source.index("board = detect_board(plat_name)"):]
|
||||
block = block[:block.index("if target:")]
|
||||
self.assertIn("has no", block)
|
||||
self.assertIn("derivative_board(plat_name)", block)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user