Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def test_overlapping_schemas(restore_singletons: Any) -> None: # noqa: F811
- @dataclass
- class Plugin:
- name: str = MISSING
- params: Dict[str, Any] = MISSING
- @dataclass
- class ConcretePlugin:
- name: str = "foobar_plugin"
- @dataclass
- class FoobarParams:
- foo: int = 10
- params: FoobarParams = FoobarParams()
- @dataclass
- class Config:
- plugin: Plugin = Plugin()
- cs = ConfigStore.instance()
- cs.store(name="config", node=Config)
- cs.store(group="plugin", name="concrete", node=ConcretePlugin, path="plugin")
- config_loader = ConfigLoaderImpl(config_search_path=create_config_search_path(None))
- cfg = config_loader.load_configuration(config_name="config", overrides=[])
- del cfg["hydra"]
- assert cfg == {"plugin": {"name": "???", "params": "???"}}
- assert cfg.plugin._type == Plugin
- cfg = config_loader.load_configuration(
- config_name="config", overrides=["plugin=concrete"]
- )
- del cfg["hydra"]
- assert cfg == {"plugin": {"name": "foobar_plugin", "params": {"foo": 10}}}
- assert cfg.plugin._type == ConcretePlugin
- assert cfg.plugin.params._type == ConcretePlugin.FoobarParams
- with pytest.raises(ValidationError):
- cfg.plugin = 10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement