mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-12 04:53:52 -06:00
An install on Android leaves an empty .nomedia in the BIOS folder. MediaProvider hides a folder holding one and every folder below it (FileUtils.java:1587-1629, ModernMediaScanner.java:845-846, a183e2b9), and RetroArch writes none: the samples, overlays and videos of system/ showed in the gallery and music apps. --check and --dry-run write nothing.
65 lines
2.4 KiB
Python
65 lines
2.4 KiB
Python
"""What an install does for the device and file system it lands on."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import tests # noqa: F401 offline, scratch under tmp/, the suite's own cache
|
|
|
|
import subprocess
|
|
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
sys.path.insert(0, str(REPO_ROOT))
|
|
sys.path.insert(0, str(REPO_ROOT / "tests"))
|
|
|
|
from test_install_selection import FakeRepository # noqa: E402
|
|
|
|
|
|
class AndroidMediaScanner(unittest.TestCase):
|
|
"""Without a .nomedia the BIOS folder's samples, overlays and videos
|
|
showed in the phone's gallery and music apps."""
|
|
|
|
def setUp(self):
|
|
self.repo = FakeRepository().__enter__()
|
|
self.addCleanup(self.repo.__exit__)
|
|
|
|
def _run(self, os_name: str, *options: str):
|
|
proc = subprocess.run(self.repo.command("--yes", "--no-input", *options),
|
|
env={**self.repo.env(), "RETROBIOS_OS": os_name},
|
|
capture_output=True, text=True, timeout=60,
|
|
stdin=subprocess.DEVNULL)
|
|
return self.repo, proc
|
|
|
|
def test_an_android_install_writes_one(self):
|
|
repo, proc = self._run("android")
|
|
self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr)
|
|
marker = repo.dest / ".nomedia"
|
|
self.assertTrue(marker.is_file())
|
|
self.assertEqual(marker.stat().st_size, 0)
|
|
self.assertIn("Added .nomedia", proc.stdout)
|
|
|
|
def test_a_second_run_leaves_it_and_says_nothing(self):
|
|
self._run("android")
|
|
_, proc = self._run("android")
|
|
self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr)
|
|
self.assertNotIn("Added .nomedia", proc.stdout)
|
|
# The marker is not a file of the list: the check finds all in place.
|
|
_, check = self._run("android", "--check")
|
|
self.assertEqual(check.returncode, 0, check.stdout + check.stderr)
|
|
|
|
def test_a_check_and_a_dry_run_write_nothing(self):
|
|
for options in (("--check",), ("--dry-run",)):
|
|
with self.subTest(options=options):
|
|
self._run("android", *options)
|
|
self.assertFalse((self.repo.dest / ".nomedia").exists())
|
|
|
|
def test_other_systems_get_none(self):
|
|
repo, proc = self._run("linux")
|
|
self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr)
|
|
self.assertFalse((repo.dest / ".nomedia").exists())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|