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))
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
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
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