Spaces:
Running
Running
| """Tests for persisted instance-local startup settings.""" | |
| from reachy_mini_conversation_app.startup_settings import ( | |
| StartupSettings, | |
| read_startup_settings, | |
| write_startup_settings, | |
| load_startup_settings_into_runtime, | |
| ) | |
| def test_write_and_read_startup_settings(tmp_path) -> None: | |
| """Startup settings should round-trip through startup_settings.json.""" | |
| write_startup_settings(tmp_path, profile="sorry_bro", voice="shimmer") | |
| assert read_startup_settings(tmp_path) == StartupSettings(profile="sorry_bro", voice="shimmer") | |
| def test_load_startup_settings_into_runtime_applies_profile_when_no_env(monkeypatch, tmp_path) -> None: | |
| """Startup settings should seed the runtime profile when no explicit env override exists.""" | |
| write_startup_settings(tmp_path, profile="sorry_bro", voice="shimmer") | |
| applied_profiles: list[str | None] = [] | |
| monkeypatch.delenv("REACHY_MINI_CUSTOM_PROFILE", raising=False) | |
| monkeypatch.setattr( | |
| "reachy_mini_conversation_app.config.set_custom_profile", | |
| lambda profile: applied_profiles.append(profile), | |
| ) | |
| settings = load_startup_settings_into_runtime(tmp_path) | |
| assert settings == StartupSettings(profile="sorry_bro", voice="shimmer") | |
| assert applied_profiles == ["sorry_bro"] | |
| def test_load_startup_settings_into_runtime_saved_settings_override_instance_env(monkeypatch, tmp_path) -> None: | |
| """Saved startup settings should override an instance-local profile env value.""" | |
| write_startup_settings(tmp_path, profile="sorry_bro", voice="shimmer") | |
| applied_profiles: list[str | None] = [] | |
| monkeypatch.setenv("REACHY_MINI_CUSTOM_PROFILE", "env_profile") | |
| monkeypatch.setattr( | |
| "reachy_mini_conversation_app.config.set_custom_profile", | |
| lambda profile: applied_profiles.append(profile), | |
| ) | |
| settings = load_startup_settings_into_runtime(tmp_path) | |
| assert settings == StartupSettings(profile="sorry_bro", voice="shimmer") | |
| assert applied_profiles == ["sorry_bro"] | |
| def test_load_startup_settings_into_runtime_saved_settings_override_inherited_env(monkeypatch, tmp_path) -> None: | |
| """Saved startup settings should override a profile inherited from another `.env`.""" | |
| write_startup_settings(tmp_path, profile="nature_documentarian", voice="cedar") | |
| applied_profiles: list[str | None] = [] | |
| monkeypatch.setenv("REACHY_MINI_CUSTOM_PROFILE", "example") | |
| monkeypatch.setattr( | |
| "reachy_mini_conversation_app.config.set_custom_profile", | |
| lambda profile: applied_profiles.append(profile), | |
| ) | |
| settings = load_startup_settings_into_runtime(tmp_path) | |
| assert settings == StartupSettings(profile="nature_documentarian", voice="cedar") | |
| assert applied_profiles == ["nature_documentarian"] | |
| def test_load_startup_settings_into_runtime_preserves_inherited_env_without_saved_settings( | |
| monkeypatch, tmp_path | |
| ) -> None: | |
| """Inherited env config should still apply when no startup settings have been saved.""" | |
| applied_profiles: list[str | None] = [] | |
| monkeypatch.setenv("REACHY_MINI_CUSTOM_PROFILE", "example") | |
| monkeypatch.setattr( | |
| "reachy_mini_conversation_app.config.set_custom_profile", | |
| lambda profile: applied_profiles.append(profile), | |
| ) | |
| settings = load_startup_settings_into_runtime(tmp_path) | |
| assert settings == StartupSettings() | |
| assert applied_profiles == [] | |