Source code for libmuscle.test.test_settings_manager

import pytest
from ymmsl.v0_2 import Reference, Settings

from libmuscle.settings_manager import SettingsManager


[docs] @pytest.fixture def settings_manager() -> SettingsManager: return SettingsManager()
[docs] def test_create(settings_manager): assert len(settings_manager.base) == 0 assert len(settings_manager.overlay) == 0
[docs] def test_list_settings_globals(settings_manager): ref = Reference settings_manager.base[ref("test1")] = 13 settings_manager.base[ref("test2")] = 14 assert settings_manager.list_settings(ref("macro")) == ["test1", "test2"]
[docs] def test_list_settings_specifics(settings_manager): ref = Reference settings_manager.base[ref("macro.test1")] = "test1" settings_manager.base[ref("micro.test2")] = "test2" assert settings_manager.list_settings(ref("macro")) == ["test1"] settings_manager.base[ref("micro.test1")] = "test1" assert settings_manager.list_settings(ref("macro")) == ["test1"]
[docs] def test_list_settings_override(settings_manager): ref = Reference settings_manager.base[ref("test1")] = "test1" settings_manager.base[ref("macro.test1")] = 42 assert settings_manager.list_settings(ref("macro")) == ["test1"] settings_manager.base[ref("micro.test1")] = 43 assert settings_manager.list_settings(ref("macro")) == ["test1"] settings_manager.base[ref("test2")] = "test2" assert settings_manager.list_settings(ref("macro")) == ["test1", "test2"]
[docs] def test_list_settings_overlay(settings_manager): ref = Reference settings_manager.base[ref("test1")] = "test1" settings_manager.overlay[ref("test1")] = "test1" assert settings_manager.list_settings(ref("macro")) == ["test1"] settings_manager.overlay[ref("test2")] = "test2" assert settings_manager.list_settings(ref("macro")) == ["test1", "test2"]
[docs] def test_list_settings_overlay_override(settings_manager): ref = Reference settings_manager.base[ref("test1")] = "test1" settings_manager.base[ref("micro.test2")] = 1 settings_manager.overlay[ref("macro.test1")] = 13 settings_manager.overlay[ref("micro.test2")] = 2 assert settings_manager.list_settings(ref("macro")) == ["test1"] assert settings_manager.list_settings(ref("micro")) == ["test1", "test2"] assert settings_manager.list_settings(ref("meso")) == ["test1"]
[docs] def test_get_setting(settings_manager): ref = Reference settings_manager.base[ref("test")] = 13 assert settings_manager.get_setting(ref("instance"), ref("test")) == 13 settings_manager.overlay[ref("test2")] = 14 assert settings_manager.get_setting(ref("instance"), ref("test2")) == 14 settings_manager.base[ref("test2")] = "test" assert settings_manager.get_setting(ref("instance"), ref("test2")) == 14 settings_manager.overlay = Settings() assert settings_manager.get_setting(ref("instance"), ref("test2")) == "test" settings_manager.base[ref("test3")] = "base_test3" settings_manager.base[ref("instance.test3")] = "base_instance_test3" assert ( settings_manager.get_setting(ref("instance"), ref("test3")) == "base_instance_test3" ) assert settings_manager.get_setting(ref("instance2"), ref("test3")) == "base_test3" settings_manager.overlay[ref("test3")] = "overlay_test3" settings_manager.overlay[ref("instance.test3")] = "overlay_instance_test3" assert ( settings_manager.get_setting(ref("instance"), ref("test3")) == "overlay_instance_test3" ) assert ( settings_manager.get_setting(ref("instance2"), ref("test3")) == "overlay_test3" ) settings_manager.base[ref("instance.test4")] = "base_test4" settings_manager.overlay[ref("test4")] = "overlay_test4" assert settings_manager.get_setting(ref("instance"), ref("test4")) == "base_test4" assert ( settings_manager.get_setting(ref("instance[10]"), ref("test4")) == "base_test4" ) settings_manager.base[ref("instance[10].test5")] = "base_test5" settings_manager.overlay[ref("test5")] = "overlay_test5" assert ( settings_manager.get_setting(ref("instance"), ref("test5")) == "overlay_test5" ) assert ( settings_manager.get_setting(ref("instance[10]"), ref("test5")) == "base_test5" ) assert ( settings_manager.get_setting(ref("instance[11]"), ref("test5")) == "overlay_test5" )
[docs] def test_get_setting_without_default_raises_keyerror(settings_manager): ref = Reference with pytest.raises(KeyError, match='Value for setting "nonexistent" was not set'): settings_manager.get_setting(ref("instance"), ref("nonexistent"))