import json import tempfile import time from pathlib import Path from unittest import TestCase from unittest.mock import patch from station import operator_camera_view as preview class PreviewCacheTest(TestCase): def tearDown(self): preview.watch(set(),set()) preview._PREVIEW.clear();preview._META.clear() def test_switch_and_stale_worker_clear_frames(self): preview.watch({'left_color'},set()) preview._PREVIEW['left_color']=(b'123',1,1) preview.watch({'right_color'},set()) self.assertNotIn('left_color',preview.previews()) with tempfile.TemporaryDirectory() as folder: preview._PREVIEW['right_color']=(b'123',1,1) payload={'frames':{},'exported_monotonic':time.monotonic()-10,'meta':{},'ages':{}} (Path(folder)/'meta.json').write_text(json.dumps(payload)) with patch.object(preview,'_BRIDGE_DIR',Path(folder)): preview._ingest() self.assertEqual(preview.previews(),{}) self.assertIn('未更新',preview.state()['error'])