Release Vulpes OS 2.7-preview.24

This commit is contained in:
OverSu 2026-11-04 12:52:20 +01:00
commit 97ef99f827
135 changed files with 7717 additions and 2524 deletions

View file

@ -20,6 +20,15 @@ class Buttons(unittest.TestCase):
for p in [{'operation':'screen','enabled':True,'level':-1},{'operation':'volume','level':float('nan')},{'operation':'exec','command':'true'}]:
with self.assertRaises(ValueError):b.control(p)
def test_display_state_updates_all_logind_sessions(self):
sessions='1 32011 droidian - 1017 manager - no -\nc2 32011 droidian - 1082 background - no -\nc3 32011 droidian seat0 1119 user tty7 no -\n'
with patch.object(b.subprocess,'run') as run:
run.side_effect=[type('Result',(),{'stdout':sessions})(),None,None,None]
self.assertTrue(b.set_session_idle(True))
calls=[call.args[0] for call in run.call_args_list[1:]]
self.assertEqual(len(calls),3)
self.assertTrue(all(call[-2:]==['b','true'] for call in calls))
def test_vibration_pattern_progresses_without_blocking_and_can_be_cancelled(self):
with tempfile.TemporaryDirectory() as d,patch.object(b,'VIBRATOR',Path(d)),patch.object(b.time,'monotonic',return_value=10):
(Path(d)/'trigger').write_text('[transient]')

View file

@ -113,11 +113,12 @@ on boot
self.assertIn(line.split(':')[-1], shells)
config = (root/'etc/tundra/lxc.conf').read_text()
self.assertIn('lxc.cgroup.devices.deny = b *:* rwm', config)
self.assertIn('lxc.cgroup2.devices.deny = b *:* rwm', config)
self.assertNotIn('lxc.cgroup2.devices.deny', config)
self.assertNotIn('host', config)
self.assertIn('lxc.cgroup2.memory.max = 536870912', config)
service=(root/'etc/systemd/system/tundra-display.service').read_text()
self.assertIn('ExecStartPre=+chvt 7', service)
self.assertIn('Environment=VULPES_DEVICE=sargo', service)
self.assertNotIn('ExecStartPost=', service)
# systemd-user's PAM stack includes these on the reference root.
for name in ('common-account', 'common-session-noninteractive'):

View file

@ -38,6 +38,40 @@ class WifiTests(unittest.TestCase):
self.assertEqual(wifi.connection_info(),{})
run.assert_not_called()
def test_status_reports_live_disconnection_instead_of_stale_connected_state(self):
def nm(*args, **kwargs):
if args[:2] == ('radio', 'wifi'):
return SimpleNamespace(returncode=0, stdout='enabled\n')
if args[:2] == ('-g', 'GENERAL.STATE'):
return SimpleNamespace(returncode=0, stdout='30 (disconnected)\n')
raise AssertionError(args)
with tempfile.TemporaryDirectory() as folder, patch.object(wifi, 'nm', side_effect=nm):
result = wifi.dispatch({'operation':'status'}, Path(folder))
self.assertEqual(result['state'], 'disconnected')
self.assertIsNone(result['network'])
def test_status_recovers_active_saved_network_even_if_scan_has_no_ap_row(self):
with tempfile.TemporaryDirectory() as folder:
profile_dir = Path(folder)
uid = 'd31f8c9d-a1f9-4df1-876a-491fe814cf2a'
profile_dir.mkdir(exist_ok=True)
(profile_dir / ('vulpes-' + uid + '.nmconnection')).write_text(
wifi.profile_text(AP, 'testpassword', uid))
def nm(*args, **kwargs):
if args[:2] == ('radio', 'wifi'):
return SimpleNamespace(returncode=0, stdout='enabled\n')
if args[:2] == ('-g', 'GENERAL.STATE'):
return SimpleNamespace(returncode=0, stdout='100 (connected)\n')
if args[:2] == ('-g', 'GENERAL.CON-UUID'):
return SimpleNamespace(returncode=0, stdout=uid+'\n')
raise AssertionError(args)
with patch.object(wifi, 'nm', side_effect=nm), \
patch.object(wifi, 'connection_info', return_value={'ipAddress':'192.0.2.2'}):
result = wifi.dispatch({'operation':'status'}, profile_dir)
self.assertEqual(result['state'], 'connected')
self.assertEqual(result['network']['ssid'], AP['ssid'])
self.assertEqual(result['network']['savedId'], uid)
def test_secret_persists_only_after_success(self):
for fail in (False, True):
with tempfile.TemporaryDirectory() as temporary: