mirror of
https://github.com/Droid-Deck/DroidDeck.git
synced 2026-10-14 19:27:09 -04:00
* Fix runtime removal races and show removal progress * Bootstrap Steam from the selected client channel * Show runtime progress below its Setup row * Always stage current session helpers and verify APK assets * Initialize Steam UI scale once using the handheld default
40 lines
1.6 KiB
Python
40 lines
1.6 KiB
Python
import importlib.util
|
|
from pathlib import Path
|
|
import tempfile
|
|
import unittest
|
|
from zipfile import ZipFile
|
|
|
|
|
|
spec = importlib.util.spec_from_file_location(
|
|
'check_session_assets', Path(__file__).resolve().parents[1] / 'release/check_session_assets.py')
|
|
assets = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(assets)
|
|
|
|
|
|
class SessionAssetsTest(unittest.TestCase):
|
|
def setUp(self):
|
|
self.temp = tempfile.TemporaryDirectory()
|
|
self.addCleanup(self.temp.cleanup)
|
|
self.root = Path(self.temp.name)
|
|
self.overlay = self.root / 'overlay'
|
|
self.helper = self.overlay / 'usr/local/bin/bannerlator-login1'
|
|
self.helper.parent.mkdir(parents=True)
|
|
self.helper.write_bytes(b'current helper')
|
|
self.apk = self.root / 'app.apk'
|
|
self.name = 'assets/linuxfs/usr/local/bin/bannerlator-login1'
|
|
|
|
def test_missing_required_helper_rejects_cached_bundle(self):
|
|
with ZipFile(self.apk, 'w') as package:
|
|
package.writestr('classes.dex', b'classes')
|
|
self.assertEqual(['missing ' + self.name], assets.check(self.apk, self.overlay))
|
|
|
|
def test_stale_helper_rejects_cached_bundle(self):
|
|
with ZipFile(self.apk, 'w') as package:
|
|
package.writestr(self.name, b'old helper')
|
|
self.assertEqual(['stale ' + self.name], assets.check(self.apk, self.overlay))
|
|
|
|
def test_current_helper_passes(self):
|
|
with ZipFile(self.apk, 'w') as package:
|
|
package.writestr(self.name, self.helper.read_bytes())
|
|
self.assertEqual([], assets.check(self.apk, self.overlay))
|