Add user-local desktop launcher and record Frame menu test

This commit is contained in:
baketnk committed 2026-09-24 12:11:43 -04:00
1 parent 26113906f0
commit 417f81cb09
6 files changed
+122 -2

No files matched your search

+18
View File
@@ -77,6 +77,9 @@ class InstallTests(unittest.TestCase):
self.assertEqual(manifest["applications"][0]["binary_path_linux"], str(launcher))
self.assertEqual(manifest["applications"][0]["binary_path_linux_arm"], str(launcher))
self.assertNotIn("binary_path", manifest["applications"][0])
desktop = self.data / "applications/frameyap.desktop"
self.assertIn(f'Exec="{launcher}"', desktop.read_text())
self.assertIn("Terminal=false", desktop.read_text())
(root / "config-untouched").write_text("keep")
self.install("v1", a1, h1)
(self.stage / "bin/frameyap").write_text("next binary")
@@ -101,6 +104,7 @@ class InstallTests(unittest.TestCase):
self.assertTrue((root / "saved-models/v1/weights.bin").exists())
self.assertTrue((root / "saved-models/v2/weights.bin").exists())
self.assertFalse(launcher.exists())
self.assertFalse(desktop.exists())
def test_digest_and_same_version_mismatch_leave_previous(self):
a, h = self.package("v1")
@@ -154,6 +158,20 @@ class InstallTests(unittest.TestCase):
self.assertEqual(os.readlink(self.data / "frameyap/current"), "versions/v1")
self.assertFalse((self.data / "frameyap/versions/v2").exists())
def test_foreign_desktop_entry_is_preserved(self):
a, h = self.package("v1")
desktop = self.data / "applications/frameyap.desktop"
desktop.parent.mkdir(parents=True)
desktop.write_text("foreign shortcut\n")
with self.assertRaisesRegex(ValueError, "foreign file"):
self.install("v1", a, h)
self.assertEqual(desktop.read_text(), "foreign shortcut\n")
self.assertFalse((self.data / "frameyap/current").exists())
def test_desktop_exec_escapes_field_codes(self):
entry = installer.desired_desktop(Path('/home/steam%user/.local/bin/frameyap')).decode()
self.assertIn('Exec="/home/steam%%user/.local/bin/frameyap"', entry)
def test_traversal_and_link_archives_rejected(self):
a, h = self.package("v1")
self.install("v1", a, h)