Files
StarPilot/openpilot/starpilot/sentry_mode/tests/test_manager.py
T
firestar5683 e52e1a6a86 Sentry
Implement Sentry scanning, notification state and worker cancellation through explicit policies and preferences.
2026-10-14 19:56:17 -05:00

38 lines
1.8 KiB
Python

import os
from pathlib import Path
import tempfile
import unittest
from unittest.mock import patch
from openpilot.common.params import Params
from openpilot.starpilot.sentry_mode.preferences import KEY, Preferences, encode
from openpilot.system.manager import process_config
class TestSentryManagerPredicate(unittest.TestCase):
def test_device_and_pc_matrix_requires_enabled_and_valid_saved_document(self):
with tempfile.TemporaryDirectory() as directory, patch.dict(os.environ, PARAMS_ROOT=directory, OPENPILOT_PREFIX="sentrymanager",
STARPILOT_SENTRY_DEVELOPMENT="0"):
params = Params()
process = process_config.managed_processes["sentry_motion"]
sensor = process_config.managed_processes["sensord"]
self.assertEqual(process.enabled, not process_config.PC)
self.assertEqual(sensor.enabled, not process_config.PC)
with patch.dict(os.environ, STARPILOT_SENTRY_DEVELOPMENT="1"):
self.assertFalse(process_config.sentry_motion(False, params, object()))
self.assertFalse(process_config.sensord_run(False, params, object()))
self.assertTrue(process_config.sensord_run(True, params, object()))
source = Path(params.get_param_path(KEY))
source.write_bytes(b"invalid")
self.assertFalse(process_config.sentry_motion(False, params, object()))
source.write_bytes(encode(Preferences(True)))
self.assertTrue(process_config.sentry_motion(False, params, object()))
self.assertTrue(process_config.sensord_run(False, params, object()))
self.assertFalse(process_config.sentry_motion(True, params, object()))
self.assertTrue(process_config.sentry_motion(False, params, object()))
self.assertTrue(process_config.sensord_run(False, params, object()))
if __name__ == "__main__":
unittest.main()