def assert_option_resolved( *, old_configured: bool = False, new_configured: bool = False, expected: str, ) -> None: old_container, new_container = OptionValueContainer(), OptionValueContainer() old_container.my_opt = old_configured_rv if old_configured else old_default_rv new_container.my_opt = new_configured_rv if new_configured else new_default_rv assert ( resolve_options(old_container=old_container, new_container=new_container) == expected )
def test_resolve_conflicting_options(self) -> None: resolve_options = partial( resolve_conflicting_options, old_option="my_opt", new_option="my_opt", old_scope="old-scope", new_scope="new-scope", ) old_val = "ancient" new_val = "modern" old_default_rv = RankedValue(RankedValue.HARDCODED, old_val) new_default_rv = RankedValue(RankedValue.HARDCODED, new_val) old_configured_rv = RankedValue(RankedValue.FLAG, old_val) new_configured_rv = RankedValue(RankedValue.FLAG, new_val) def assert_option_resolved( *, old_configured: bool = False, new_configured: bool = False, expected: str, ) -> None: old_container, new_container = OptionValueContainer( ), OptionValueContainer() old_container.my_opt = old_configured_rv if old_configured else old_default_rv new_container.my_opt = new_configured_rv if new_configured else new_default_rv assert resolve_options(old_container=old_container, new_container=new_container) == expected assert_option_resolved(expected=new_val) assert_option_resolved(old_configured=True, expected=old_val) assert_option_resolved(new_configured=True, expected=new_val) # both configured -> raise an error old_container, new_container = OptionValueContainer( ), OptionValueContainer() old_container.my_opt = old_configured_rv new_container.my_opt = new_configured_rv with pytest.raises(ValueError) as e: resolve_options(old_container=old_container, new_container=new_container) assert "--old-scope-my-opt" in str(e.value) assert "--new-scope-my-opt" in str(e.value)