from pathlib import Path from unittest import mock import pytest from cthulhu import settings_manager def _manager(tmp_path: Path): manager = settings_manager.SettingsManager(mock.Mock()) manager.activate(prefsDir=str(tmp_path)) return manager @pytest.mark.unit def test_registry_defaults_to_default_profile(tmp_path): _manager(tmp_path) from cthulhu import gsettings_registry registry = gsettings_registry.get_registry() registry.clear_runtime_values() assert registry.get_active_profile() == "default" assert registry.get_active_app() is None @pytest.mark.unit def test_runtime_override_wins_over_toml(tmp_path): _manager(tmp_path) from cthulhu import gsettings_registry registry = gsettings_registry.get_registry() registry.set_runtime_value("keybindings", "keyboard-layout", "laptop") assert registry.layered_lookup( "keybindings", "keyboard-layout", "", default="desktop", ) == "laptop" @pytest.mark.unit def test_save_schema_writes_toml_not_dconf(tmp_path): _manager(tmp_path) from cthulhu import gsettings_registry registry = gsettings_registry.get_registry() registry.save_schema( "keybindings", {"keyboard-layout": "laptop", "laptop-modifier-keys": ["Caps_Lock"]}, "default", "", skip_defaults=False, ) text = Path(tmp_path, "user-settings.toml").read_text(encoding="utf-8") assert "keyboard-layout" in text assert "laptop-modifier-keys" in text assert "org.gnome.Orca" not in text assert "dconf" not in text