mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-06 08:46:04 +08:00
70 lines
1.6 KiB
Python
70 lines
1.6 KiB
Python
from openpilot.common.params import UnknownKeyName
|
|
from openpilot.starpilot.common.safe_mode import (
|
|
SAFE_MODE_BACKUP_PARAM,
|
|
SAFE_MODE_MANAGED_KEYS,
|
|
apply_safe_mode,
|
|
restore_safe_mode,
|
|
_apply_value,
|
|
)
|
|
|
|
|
|
class RemovedParamStore:
|
|
def get(self, key):
|
|
raise UnknownKeyName(key)
|
|
|
|
|
|
class FakeParamStore:
|
|
def __init__(self, values=None):
|
|
self.values = dict(values or {})
|
|
|
|
def get(self, key):
|
|
return self.values.get(key)
|
|
|
|
def get_stock_value(self, key):
|
|
return None
|
|
|
|
def put(self, key, value):
|
|
self.values[key] = value
|
|
|
|
def put_bool(self, key, value):
|
|
self.values[key] = bool(value)
|
|
|
|
def remove(self, key):
|
|
self.values.pop(key, None)
|
|
|
|
|
|
def test_apply_value_ignores_removed_param():
|
|
assert not _apply_value(RemovedParamStore(), "RemovedParam", "stale value")
|
|
|
|
|
|
def test_safe_mode_does_not_manage_manual_fingerprint():
|
|
assert "ForceFingerprint" not in SAFE_MODE_MANAGED_KEYS
|
|
|
|
|
|
def test_safe_mode_migrates_saved_manual_fingerprint_out_of_backup():
|
|
params = FakeParamStore()
|
|
params_raw = FakeParamStore({
|
|
"ForceFingerprint": False,
|
|
SAFE_MODE_BACKUP_PARAM: {
|
|
"ForceFingerprint": {"present": True, "value": True},
|
|
},
|
|
})
|
|
|
|
apply_safe_mode(params, params_raw)
|
|
|
|
assert params_raw.get("ForceFingerprint") is True
|
|
assert "ForceFingerprint" not in params_raw.get(SAFE_MODE_BACKUP_PARAM)
|
|
|
|
|
|
def test_safe_mode_restore_ignores_stale_manual_fingerprint_backup():
|
|
params_raw = FakeParamStore({
|
|
"ForceFingerprint": True,
|
|
SAFE_MODE_BACKUP_PARAM: {
|
|
"ForceFingerprint": {"present": True, "value": False},
|
|
},
|
|
})
|
|
|
|
restore_safe_mode(params_raw)
|
|
|
|
assert params_raw.get("ForceFingerprint") is True
|