Beispiel #1
0
def test_warn_if_multiple_plugins_add_option():
    base_config_spec = {"Server": {"DEPLOY": {"type": "string"}}}
    plugin_config_spec = {
        "Lever": {
            "DEPLOY": {
                "type": "string",
                "default": "you got served"
            }
        }
    }
    plugin_options_mock1 = ModuleType("options_mock")
    setattr(plugin_options_mock1, "option_spec", plugin_config_spec)
    plugin_mock1 = MagicMock(options_module=plugin_options_mock1,
                             module_path="test1")
    plugin_options_mock2 = ModuleType("options_mock")
    setattr(plugin_options_mock2, "option_spec", plugin_config_spec)
    plugin_mock2 = MagicMock(options_module=plugin_options_mock2,
                             module_path="test2")
    plugin_mock1._module_path.return_value = "test1"
    plugin_mock1._module_path.return_value = "test2"
    plugins = [plugin_mock1, plugin_mock2]
    with patch("kolibri.plugins.utils.options.registered_plugins", plugins):
        with patch("kolibri.plugins.utils.options.warnings") as warnings_mock:
            extend_config_spec(base_config_spec)
            assert warnings_mock.warn.called
Beispiel #2
0
def test_raise_if_overwrite_core_option():
    base_config_spec = {"Server": {"DEPLOY": {"type": "string"}}}
    plugin_options_mock = ModuleType("options_mock")
    setattr(plugin_options_mock, "option_spec", base_config_spec)
    plugin_mock = MagicMock(options_module=plugin_options_mock)
    plugins = [plugin_mock]
    with pytest.raises(ValueError):
        with patch("kolibri.plugins.utils.options.registered_plugins",
                   plugins):
            extend_config_spec(base_config_spec)
Beispiel #3
0
def test_not_raise_if_overwrite_core_option_default_only():
    base_config_spec = {
        "Server": {
            "DEPLOY": {
                "type": "string",
                "default": "hey you!"
            }
        }
    }
    plugin_config_spec = {"Server": {"DEPLOY": {"default": "you got served"}}}
    plugin_options_mock = ModuleType("options_mock")
    setattr(plugin_options_mock, "option_spec", plugin_config_spec)
    plugin_mock = MagicMock(options_module=plugin_options_mock)
    plugins = [plugin_mock]
    try:
        with patch("kolibri.plugins.utils.options.registered_plugins",
                   plugins):
            extend_config_spec(base_config_spec)
    except ValueError:
        pytest.fail(
            "Error raised when only overwriting the default value of a core option"
        )
Beispiel #4
0
def test_can_update_default():
    base_config_spec = {
        "Server": {
            "DEPLOY": {
                "type": "string",
                "default": "why thank you!"
            }
        }
    }
    plugin_config_spec = {"Server": {"DEPLOY": {"default": "you got served"}}}
    plugin_options_mock = ModuleType("options_mock")
    setattr(plugin_options_mock, "option_spec", plugin_config_spec)
    plugin_mock = MagicMock(options_module=plugin_options_mock)
    plugins = [plugin_mock]
    with patch("kolibri.plugins.utils.options.registered_plugins", plugins):
        final_spec = extend_config_spec(base_config_spec)
        assert (final_spec["Server"]["DEPLOY"]["default"] ==
                plugin_config_spec["Server"]["DEPLOY"]["default"])
Beispiel #5
0
def test_can_add_to_plugin_section():
    base_config_spec = {}
    plugin_config_spec1 = {"Bursar": {"GOODBOY": {"type": "string"}}}
    plugin_mock1 = MagicMock()
    plugin_options_mock1 = ModuleType("options_mock")
    setattr(plugin_options_mock1, "option_spec", plugin_config_spec1)
    plugin_mock1 = MagicMock(options_module=plugin_options_mock1)
    plugin_config_spec2 = {"Bursar": {"BADBOY": {"type": "string"}}}
    plugin_options_mock2 = ModuleType("options_mock")
    setattr(plugin_options_mock2, "option_spec", plugin_config_spec2)
    plugin_mock2 = MagicMock(options_module=plugin_options_mock2)
    plugins = [plugin_mock1, plugin_mock2]
    with patch("kolibri.plugins.utils.options.registered_plugins", plugins):
        final_spec = extend_config_spec(base_config_spec)
        assert (final_spec["Bursar"]["GOODBOY"] ==
                plugin_config_spec1["Bursar"]["GOODBOY"])
        assert final_spec["Bursar"]["BADBOY"] == plugin_config_spec2["Bursar"][
            "BADBOY"]
Beispiel #6
0
def _get_option_spec():
    """
    Combine the default option spec with any options that are defined in plugins
    """
    option_spec = extend_config_spec(base_option_spec)
    envvars = set()
    for section, opts in option_spec.items():
        for optname, attrs in opts.items():
            opt_envvars = attrs.get("envvars", tuple())
            default_envvar = "KOLIBRI_{}".format(optname.upper())
            if default_envvar not in envvars:
                envvars.add(default_envvar)
            else:
                logging.warn(
                    "Duplicate environment variable for options {}".format(
                        default_envvar))
                default_envvar = "KOLIBRI_{}_{}".format(
                    section.upper(), optname.upper())
            if default_envvar not in opt_envvars:
                attrs["envvars"] = opt_envvars + (default_envvar, )
    return option_spec
def test_can_add_to_base_section():
    base_config_spec = {
        "Server": {
            "DEPLOY": {
                "type": "string",
                "default": "why thank you!"
            }
        }
    }
    plugin_config_spec = {"Server": {"GOODBOY": {"type": "string"}}}
    plugin_mock = MagicMock()
    plugin_settings_mock = ModuleType("settings_mock")
    setattr(plugin_settings_mock, "option_spec", plugin_config_spec)
    plugin_mock.options_module.return_value = plugin_settings_mock
    plugins = [plugin_mock]
    with patch("kolibri.plugins.utils.options.registered_plugins", plugins):
        final_spec = extend_config_spec(base_config_spec)
        assert final_spec["Server"]["DEPLOY"] == base_config_spec["Server"][
            "DEPLOY"]
        assert (final_spec["Server"]["GOODBOY"] == plugin_config_spec["Server"]
                ["GOODBOY"])
Beispiel #8
0
def _get_option_spec():
    """
    Combine the default option spec with any options that are defined in plugins
    """
    return extend_config_spec(base_option_spec)