From 5068f505ee6f698e7767385cf225c3086b383ca6 Mon Sep 17 00:00:00 2001 From: Vito Sansevero Date: Tue, 27 Oct 2026 01:53:35 -0700 Subject: [PATCH] test(browser): the System reset restores every settings value, safety_backup included The frontend coverage shard of #372 failed in workspace-system-tagging: the review read "No safety backup (the policy is off)". The backups spec saves safety_backup=false, and /__test__/system/reset restored config.json but not PromptManagerConfig.SAFETY_BACKUP (nor INFINITE_SCROLL), so a later spec on the same worker server saw the policy off. The reset now captures and restores every non-tagging value POST /settings can change. --- tests/browser/workspace_system_fixture.py | 37 ++++++++++++----------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/tests/browser/workspace_system_fixture.py b/tests/browser/workspace_system_fixture.py index 0fc36d97..9900abc8 100644 --- a/tests/browser/workspace_system_fixture.py +++ b/tests/browser/workspace_system_fixture.py @@ -97,15 +97,25 @@ def register_system_commands(app, routes, api, root: Path): real_move = library_move.move_library keep = PromptManagerConfig.KEEP_LIBRARY_IN_NODE_FOLDER config_bytes = config_path.read_bytes() if config_path.exists() else None - host_values = ( - PromptManagerConfig.RESULT_TIMEOUT, - PromptManagerConfig.WEBUI_DISPLAY_MODE, - PromptManagerConfig.WORKER_THREADS, - GalleryConfig.MONITORING_ENABLED, - PromptManagerConfig.THUMBNAIL_FORMAT, - PromptManagerConfig.THUMBNAIL_QUALITY, - PromptManagerConfig.THUMBNAIL_EDGE, + from py.api.settings_routes import ( + _AUTOTAG_SETTINGS, + _GALLERY_SETTINGS, + _SETTINGS_FILE_KEYS, ) + + # Every value POST /settings can change, so a reset restores each one + # (a saved safety_backup=false once leaked into a later spec's review). + # The tagging settings are the tagging fixture's to reset. + host_values = { + (GalleryConfig if name in _GALLERY_SETTINGS else PromptManagerConfig, name): ( + getattr( + GalleryConfig if name in _GALLERY_SETTINGS else PromptManagerConfig, + name, + ) + ) + for name in _SETTINGS_FILE_KEYS + if name not in _AUTOTAG_SETTINGS + } from py.api import thumbnail_encode monitor = getattr(image_monitor, "_monitor_instance", None) @@ -135,15 +145,8 @@ def register_system_commands(app, routes, api, root: Path): unplugged.rmdir() GalleryConfig.MONITORING_DIRECTORIES = list(configured) api._health_report = None - ( - PromptManagerConfig.RESULT_TIMEOUT, - PromptManagerConfig.WEBUI_DISPLAY_MODE, - PromptManagerConfig.WORKER_THREADS, - GalleryConfig.MONITORING_ENABLED, - PromptManagerConfig.THUMBNAIL_FORMAT, - PromptManagerConfig.THUMBNAIL_QUALITY, - PromptManagerConfig.THUMBNAIL_EDGE, - ) = host_values + for (owner, name), value in host_values.items(): + setattr(owner, name, value) thumbnail_encode.reset_encoders() image_monitor._monitor_instance = monitor api.__dict__.pop("_library_resolver", None)