Esempio n. 1
0
 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
     )
Esempio n. 2
0
    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)