From 1f1b1d5db9aa46641958139394ee65960fcdcf99 Mon Sep 17 00:00:00 2001 From: Dom <168790843+firestar5683@users.noreply.github.com> Date: Thu, 29 Oct 2026 19:24:19 -0500 Subject: [PATCH] Match persisted language and bounded proof wait test fixtures --- .../aol/tests/test_late_lateral_inputs.py | 22 ++++++++++++++++++- .../system/ui/tests/test_multilang_refresh.py | 18 +++++++-------- prebuilt.json | 2 +- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/openpilot/starpilot/aol/tests/test_late_lateral_inputs.py b/openpilot/starpilot/aol/tests/test_late_lateral_inputs.py index 8b4ed54aec..5f61505aab 100644 --- a/openpilot/starpilot/aol/tests/test_late_lateral_inputs.py +++ b/openpilot/starpilot/aol/tests/test_late_lateral_inputs.py @@ -1,6 +1,6 @@ """A fresh queued proof may replace an expired snapshot; no lease is renewed.""" -from unittest.mock import patch +from unittest.mock import call, patch import pytest from opendbc.can import CANPacker from opendbc.car import Bus @@ -212,8 +212,11 @@ def test_queued_fresh_sdgm_axis_is_consumed_before_steering_gate(c9, case): ) pending = [] if case in ('empty', 'old_long_axis_empty') else [v.as_reader() for v in values.values()] + transport_events = [] + def receive(timeout): nonlocal now + transport_events.append(('receive', timeout)) assert timeout == 0 controls.sm.update_msgs(now / 1e9, pending) if case == 'clock_crosses_deadline': @@ -223,15 +226,32 @@ def test_queued_fresh_sdgm_axis_is_consumed_before_steering_gate(c9, case): with ( patch.object(controls.sm, 'update', side_effect=receive) as receive_latest, patch('openpilot.selfdrive.controls.controlsd.time.monotonic_ns', return_value=now) as decision_clock, + patch('openpilot.cereal.messaging.Poller') as poller, ): + poller.return_value.registerSocket.side_effect = lambda socket: transport_events.append(('register', socket)) + poller.return_value.poll.side_effect = lambda timeout: transport_events.append(('poll', timeout)) command, _ = controls.state_control() # GM may refresh an expired combined proof, but cannot start LONG on a LAT-only receipt. expected = case in ('healthy', 'live_snapshot', 'disabled_long_candidate', 'stock_sibling', 'stock_cruise_off', 'new_host_long', 'old_long_axis') assert command.latActive == expected and not command.longActive, (case, command.to_dict()) if case in ('live_snapshot', 'old_long_active_only', 'old_long_desired_only'): receive_latest.assert_not_called() + poller.assert_not_called() + assert not transport_events + elif case in ('empty', 'old_long_axis_empty'): + # Only an unchanged header permits the bounded wait and second receive. + socket = controls.sm.sock['aolAxisState'] + poller.assert_called_once_with() + poller.return_value.registerSocket.assert_called_once_with(socket) + poller.return_value.poll.assert_called_once_with(10) + assert receive_latest.call_args_list == [call(0), call(0)] + assert transport_events == [('receive', 0), ('register', socket), ('poll', 10), ('receive', 0)] + assert controls.sm.logMonoTime['aolAxisState'] == BASE + assert controls.sm['aolAxisState'].validUntilMonoTime == original_deadline else: receive_latest.assert_called_once_with(0) + poller.assert_not_called() + assert transport_events == [('receive', 0)] if case == 'old_long_axis': refreshed = controls.sm['aolAxisState'] assert refreshed.sourceCarStateMonoTime == BASE + 25_000_000 diff --git a/openpilot/system/ui/tests/test_multilang_refresh.py b/openpilot/system/ui/tests/test_multilang_refresh.py index 4aecd58aa3..ee7298adeb 100644 --- a/openpilot/system/ui/tests/test_multilang_refresh.py +++ b/openpilot/system/ui/tests/test_multilang_refresh.py @@ -1,16 +1,16 @@ +from openpilot.common.params import Params from openpilot.system.ui.lib.multilang import Multilang, PLURAL_SELECTORS -def test_external_language_selection_and_english_fallback(): +def test_external_language_selection_and_english_fallback(tmp_path): language = Multilang() - class SavedLanguage: - value = 'vi' - - def get(self, key): + class SavedLanguage(Params): + def get(self, key, block=False, return_default=False): assert key == 'LanguageSetting' - return self.value + return super().get(key, block=block, return_default=return_default) - saved = SavedLanguage() + saved = SavedLanguage(str(tmp_path)) + saved.put('LanguageSetting', 'vi', block=True) language._params = saved language.refresh_language() assert language.language == 'vi' @@ -18,9 +18,9 @@ def test_external_language_selection_and_english_fallback(): assert language.tr('Untranslated text') == 'Untranslated text' assert language.trn('{} day ago', '{} days ago', 2) == '{} ngày trước' assert PLURAL_SELECTORS['vi'](0) == PLURAL_SELECTORS['vi'](2) == 0 - saved.value = 'main_ja' + saved.put('LanguageSetting', 'main_ja', block=True) language.refresh_language() assert language.language == 'ja' and language.requires_font_fallback() - saved.value = 'unknown' + saved.put('LanguageSetting', 'unknown', block=True) language.refresh_language() assert language.language == 'en' and language.tr('Cancel') == 'Cancel' diff --git a/prebuilt.json b/prebuilt.json index a6b398f4de..05c71a1e9a 100644 --- a/prebuilt.json +++ b/prebuilt.json @@ -1 +1 @@ -{"protected_inventory_sha256": "505172af4fab7bd15c27b90d3c52205e2a64db67875aa1447008cc0ed932c5dc", "schema_version": 1} +{"protected_inventory_sha256": "d7b4a160cc976f0f185161e66ca79eda0e872a574013ab8481a5e8411a1f78c3", "schema_version": 1}