From 3897b630688f8b3e18eea83499efe8caa9ba995a Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Fri, 29 May 2026 20:22:06 -0400 Subject: [PATCH] Iproved logging for startup flags. --- .../core/settingsManager.py | 15 +++++++++++ src/fenrirscreenreader/fenrirVersion.py | 2 +- tests/unit/test_settings_validation.py | 26 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/fenrirscreenreader/core/settingsManager.py b/src/fenrirscreenreader/core/settingsManager.py index 185da871..99cb0ba5 100644 --- a/src/fenrirscreenreader/core/settingsManager.py +++ b/src/fenrirscreenreader/core/settingsManager.py @@ -6,6 +6,7 @@ import inspect import os +from argparse import Namespace from configparser import ConfigParser from fenrirscreenreader.core import applicationManager @@ -67,6 +68,15 @@ class SettingsManager: def shutdown(self): pass + def format_cli_args(self, cliArgs): + if cliArgs is None: + return "{}" + if isinstance(cliArgs, Namespace): + args = vars(cliArgs) + else: + args = vars(cliArgs) if hasattr(cliArgs, "__dict__") else {} + return str({key: args[key] for key in sorted(args)}) + def get_binding_backup(self): return self.bindingsBackup.copy() @@ -644,6 +654,11 @@ class SettingsManager: ) ) environment["runtime"]["DebugManager"].initialize(environment) + environment["runtime"]["DebugManager"].write_debug_out( + "Fenrir startup CLI arguments: " + self.format_cli_args(cliArgs), + debug.DebugLevel.INFO, + on_any_level=True, + ) if cliArgs.force_all_screens: environment["runtime"]["force_all_screens"] = True diff --git a/src/fenrirscreenreader/fenrirVersion.py b/src/fenrirscreenreader/fenrirVersion.py index 278b1cd9..2ec05ee3 100644 --- a/src/fenrirscreenreader/fenrirVersion.py +++ b/src/fenrirscreenreader/fenrirVersion.py @@ -5,4 +5,4 @@ # By Chrys, Storm Dragon, and contributors. version = "2026.05.29" -code_name = "master" +code_name = "testing" diff --git a/tests/unit/test_settings_validation.py b/tests/unit/test_settings_validation.py index ef185e13..45c7fc2c 100644 --- a/tests/unit/test_settings_validation.py +++ b/tests/unit/test_settings_validation.py @@ -5,6 +5,8 @@ Tests the _validate_setting_value method to ensure proper input validation for all configurable settings that could cause crashes or accessibility issues. """ +from argparse import Namespace + import pytest import sys from pathlib import Path @@ -206,6 +208,30 @@ def test_focus_settings_define_tui_toggle(): assert settings_data["focus"]["tui"] is False +@pytest.mark.unit +@pytest.mark.settings +def test_format_cli_args_reports_startup_flags_in_stable_order(): + manager = SettingsManager() + cli_args = Namespace( + debug=True, + foreground=False, + force_all_screens=False, + ignore_screen=["7"], + options="speech#rate=1.2", + print=False, + setting="/tmp/settings.conf", + x11=True, + x11_window_id="0x123", + ) + + assert manager.format_cli_args(cli_args) == ( + "{'debug': True, 'force_all_screens': False, 'foreground': False, " + "'ignore_screen': ['7'], 'options': 'speech#rate=1.2', " + "'print': False, 'setting': '/tmp/settings.conf', 'x11': True, " + "'x11_window_id': '0x123'}" + ) + + @pytest.mark.unit @pytest.mark.settings class TestSettingsPathSelection: