Fix mocked driver-monitor graphics fixtures

This commit is contained in:
firestar5683
2026-10-15 02:09:55 -05:00
parent f1af611791
commit 32fee7f2fe
4 changed files with 43 additions and 12 deletions
@@ -4,7 +4,7 @@ import io
import struct
from types import SimpleNamespace as NS
import unittest
from unittest.mock import Mock
from unittest.mock import Mock, call
import zlib
from openpilot.starpilot.ui.layout_preview_renderer import LayoutPreviewRenderer, _Canvas, _DriverMonitorArt, _png_rgba, sample_state
@@ -174,18 +174,28 @@ class LayoutPreviewRendererTests(unittest.TestCase):
canvas.monitor = _DriverMonitorArt.__new__(_DriverMonitorArt)
canvas.monitor.profile = Profile.COMPACT
canvas.monitor.renderer = Mock()
matrix = Mock()
matrix.attach_mock(canvas.monitor.renderer._render, 'render')
state = sample_state("engaged", default_document())
with patch("openpilot.starpilot.ui.layout_preview_renderer.draw_widget_frame"):
with patch("openpilot.starpilot.ui.layout_preview_renderer.draw_widget_frame"), \
patch.multiple(rl, rl_push_matrix=matrix.push, rl_translatef=matrix.translate,
rl_scalef=matrix.scale, rl_pop_matrix=matrix.pop):
canvas._render_driver_monitor(rl.Rectangle(), state)
canvas.monitor.renderer._render.assert_not_called()
self.assertEqual(matrix.mock_calls, [])
state.customization["layouts"]["compact"]["driver_monitor"].update(x=200, y=100)
canvas._render_driver_monitor(rl.Rectangle(), state)
canvas.monitor.renderer._render.assert_called_once()
self.assertEqual(matrix.mock_calls, [call.push(), call.translate(200, 100, 0), call.scale(1, 1, 1),
call.translate(-200, -100, 0), call.render(canvas.monitor.renderer._rect), call.pop()])
matrix.reset_mock()
canvas.monitor.renderer._render.reset_mock()
state.customization["layouts"]["compact"]["driver_monitor"].update(x=16, y=10)
canvas.view.compact_hud._set_speed_alpha.x = 0.0
canvas._render_driver_monitor(rl.Rectangle(), state)
canvas.monitor.renderer._render.assert_called_once()
self.assertEqual(matrix.mock_calls, [call.push(), call.translate(16, 10, 0), call.scale(1, 1, 1),
call.translate(-16, -10, 0), call.render(canvas.monitor.renderer._rect), call.pop()])
def test_big_sidebar_matches_original_right_rail_and_is_sample_only(self):
frame = rl.Rectangle(1860, 0, 300, 1080)
@@ -1,5 +1,5 @@
from unittest.mock import Mock
from unittest.mock import Mock, call as mock_call
from openpilot.starpilot.ui.presentation import BitmapFonts
import json
from dataclasses import replace
@@ -607,13 +607,16 @@ def test_driver_frame_matches_native_preview_and_keeps_face_renderer_separate(mo
state = road(document)
live = DriverMonitorLayer.__new__(DriverMonitorLayer)
live.profile = Profile.COMPACT
matrix = Mock()
monkeypatch.setattr(live, 'renderer', NS(set_should_draw=Mock(), set_position=Mock(), _rect=object(),
_fade_filter=NS(update=Mock()), _render=Mock()), raising=False)
_fade_filter=NS(update=Mock()), _render=matrix.live_render), raising=False)
preview = _DriverMonitorArt.__new__(_DriverMonitorArt)
preview.profile = Profile.COMPACT
monkeypatch.setattr(preview, 'renderer', NS(_render=Mock()), raising=False)
monkeypatch.setattr(preview, 'renderer', NS(_render=matrix.preview_render), raising=False)
with patch('openpilot.starpilot.ui.onroad_dm.draw_widget_frame') as live_frame, \
patch('openpilot.starpilot.ui.layout_preview_renderer.draw_widget_frame') as preview_frame:
patch('openpilot.starpilot.ui.layout_preview_renderer.draw_widget_frame') as preview_frame, \
patch.multiple(rl, rl_push_matrix=matrix.push, rl_translatef=matrix.translate,
rl_scalef=matrix.scale, rl_pop_matrix=matrix.pop):
live.render(state, monitor=None, driver=None, fresh=False, onroad=True)
preview.render(rl.Rectangle(0, 0, 536, 240), state)
assert live_frame.call_args.args[1:] == preview_frame.call_args.args[1:]
@@ -623,6 +626,12 @@ def test_driver_frame_matches_native_preview_and_keeps_face_renderer_separate(mo
live.renderer._fade_filter.update.assert_called_once_with(0.35)
live.renderer._render.assert_called_once()
preview.renderer._render.assert_called_once()
assert matrix.mock_calls == [
mock_call.push(), mock_call.translate(90, 40, 0), mock_call.scale(1, 1, 1), mock_call.translate(-90, -40, 0),
mock_call.live_render(live.renderer._rect), mock_call.pop(),
mock_call.push(), mock_call.translate(90, 40, 0), mock_call.scale(1, 1, 1), mock_call.translate(-90, -40, 0),
mock_call.preview_render(preview.renderer._rect), mock_call.pop(),
]
@pytest.mark.parametrize("enabled", [True, False])
+17 -5
View File
@@ -1,4 +1,4 @@
from unittest.mock import Mock
from unittest.mock import Mock, call
from openpilot.starpilot.ui.presentation import BitmapFonts
from unittest.mock import patch
@@ -158,19 +158,25 @@ class TestDriverMonitor(unittest.TestCase):
monitor.visionPolicyState.pose.pitch = float('nan')
layer = DriverMonitorLayer.__new__(DriverMonitorLayer)
layer.profile = Profile.LARGE
matrix = Mock()
self.enterContext(
patch.object(
layer,
'renderer',
NS(set_should_draw=Mock(), set_position=Mock(), _rect=object(), _is_active=True, _fade_filter=NS(update=Mock()), _update_state=Mock(), _render=Mock()),
NS(set_should_draw=Mock(), set_position=Mock(), _rect=object(), _is_active=True,
_fade_filter=NS(update=Mock()), _update_state=Mock(), _render=matrix.render),
create=True,
)
)
layer.render(road(), monitor=monitor, driver=driver, fresh=True, onroad=True)
with patch.multiple('openpilot.starpilot.ui.onroad_dm.rl', rl_push_matrix=matrix.push, rl_translatef=matrix.translate,
rl_scalef=matrix.scale, rl_pop_matrix=matrix.pop):
layer.render(road(), monitor=monitor, driver=driver, fresh=True, onroad=True)
layer.renderer._update_state.assert_not_called()
layer.renderer._render.assert_called_once()
self.assertFalse(layer.renderer._is_active)
layer.renderer._fade_filter.update.assert_called_once_with(0.35)
self.assertEqual(matrix.mock_calls, [call.push(), call.translate(120, 840, 0), call.scale(1, 1, 1),
call.translate(-120, -840, 0), call.render(layer.renderer._rect), call.pop()])
def test_visible_face_keeps_person_solid_even_when_vision_policy_is_inactive(self):
from openpilot.selfdrive.ui.mici.onroad.driver_state import DriverStateRenderer
@@ -196,13 +202,19 @@ class TestDriverMonitor(unittest.TestCase):
document['layouts']['large']['driver_monitor'].update(x=700.5, y=600.25)
layer = DriverMonitorLayer.__new__(DriverMonitorLayer)
layer.profile = Profile.LARGE
matrix = Mock()
self.enterContext(
patch.object(layer, 'renderer', NS(set_should_draw=Mock(), set_position=Mock(), _update_state=Mock(), _render=Mock(), _rect=object()), create=True)
patch.object(layer, 'renderer', NS(set_should_draw=Mock(), set_position=Mock(), _update_state=Mock(),
_render=matrix.render, _rect=object()), create=True)
)
layer.render(replace(road(), customization=document), monitor=monitor, driver=driver, fresh=True, onroad=True)
with patch.multiple('openpilot.starpilot.ui.onroad_dm.rl', rl_push_matrix=matrix.push, rl_translatef=matrix.translate,
rl_scalef=matrix.scale, rl_pop_matrix=matrix.pop):
layer.render(replace(road(), customization=document), monitor=monitor, driver=driver, fresh=True, onroad=True)
layer.renderer.set_position.assert_called_once_with(700.5, 600.25)
layer.renderer._update_state.assert_called_once()
layer.renderer._render.assert_called_once_with(layer.renderer._rect)
self.assertEqual(matrix.mock_calls, [call.push(), call.translate(700.5, 600.25, 0), call.scale(1, 1, 1),
call.translate(-700.5, -600.25, 0), call.render(layer.renderer._rect), call.pop()])
def test_composition_wires_actual_monitor_layer_before_alert(self):
from contextlib import ExitStack
+1 -1
View File
@@ -1 +1 @@
{"protected_inventory_sha256": "e10d74d6606301a472810871c5349040d6db434e66388e860ac574d5d1f8d043", "schema_version": 1}
{"protected_inventory_sha256": "5cfd05f33d0a6367fd072ab3463b923ca56e8eb23596f0f83ca2ea38c3df9149", "schema_version": 1}