Esempio n. 1
0
    def test_plugin_bad_config_file(plugin_config_file):
        with pytest.raises(exceptions.UserError) as err_info:
            validator = PluginValidator(plugin_config_file,
                                        util_classes.PLUGIN_CONFIG_SCHEMA,
                                        ValidationMode.ERROR, True)
            validator.validate()

        message = err_info.value.message
        assert message == ("Unable to read plugin config file '{}'"
                           "\nError code: 2. Error message: No such file or"
                           " directory".format(plugin_config_file))
Esempio n. 2
0
    def test_direct_plugin(fake_direct_plugin_config):
        with pytest.raises(exceptions.UserError) as err_info:
            validator = PluginValidator(fake_direct_plugin_config,
                                        util_classes.PLUGIN_CONFIG_SCHEMA,
                                        ValidationMode.ERROR, True)
            validator.validate()

        message = err_info.value.message
        assert validator.result.warnings.items() > 0
        assert 'Named argument mismatch in method' in message
        assert 'Number of arguments do not match' in message
        assert 'Implementation missing for required method' in message
Esempio n. 3
0
    def test_staged_plugin(mock_file_util, fake_staged_plugin_config):
        src_dir = os.path.dirname(fake_staged_plugin_config)
        mock_file_util.return_value = os.path.join(src_dir, 'src/')

        with pytest.raises(exceptions.UserError) as err_info:
            validator = PluginValidator(fake_staged_plugin_config,
                                        util_classes.PLUGIN_CONFIG_SCHEMA,
                                        ValidationMode.ERROR, True)
            validator.validate()

        message = err_info.value.message
        assert validator.result.warnings.items() > 0
        assert 'Named argument mismatch in method' in message
        assert 'Number of arguments do not match' in message
        assert 'Implementation missing for required method' in message
Esempio n. 4
0
def read_and_validate_plugin_config_file(plugin_config,
                                         stop_build,
                                         run_all_validations,
                                         skip_id_validation=False):
    """
    Reads a plugin config file and validates the contents using a
    pre-defined schema. If stop_build is True, will report exception
    back, otherwise warnings.
    Returns:
        On successful validation, returns content of the plugin
        config.
    """
    validation_mode = ValidationMode.ERROR if stop_build else ValidationMode.WARNING
    plugin_config_schema_file = (
        util_classes.PLUGIN_CONFIG_SCHEMA_NO_ID_VALIDATION
        if skip_id_validation else util_classes.PLUGIN_CONFIG_SCHEMA)
    validator = PluginValidator(plugin_config, plugin_config_schema_file,
                                validation_mode, run_all_validations)
    validator.validate()
    return validator.result