def validate_plugins_presence_in_conf(plugin_manager, plugins_dict, present=True): """Validate presence of plugins in the configuration file :param plugin_manager: InfraredPluginManager object :param plugins_dict: Dict of plugins {plugin_name: plugin_dir_path, ...} :param present: Whether all plugins in the dict should be present in the plugins configuration file or not. """ assert present in (True, False), \ "'absent' accept only Boolean values, got: '{}'".format(str(present)) with open(plugin_manager.config_file) as config_file: plugins_cfg = ConfigParser.ConfigParser() plugins_cfg.readfp(config_file) for plugin_path in plugins_dict.values(): plugin = InfraredPlugin(plugin_path['src']) if present: assert plugins_cfg.has_option(plugin.type, plugin.name), \ "Plugin '{}' was suppose to be in the plugins " \ "configuration file".format(plugin.name) else: assert not plugins_cfg.has_option(plugin.type, plugin.name), \ "Plugin '{}' wasn't suppose to be in the plugins " \ "configuration file".format(plugin.name)
def test_add_plugin_corrupted_spec(tmpdir_factory, description, plugin_spec): """Tests that it's not possible to add a plugin with invalid spec file :param tmpdir_factory: pytest builtin fixture for creating temp dirs :param description: test description (adds a description in pytest run) :param plugin_spec: dictionary with data for spec file :return: """ lp_dir = tmpdir_factory.mktemp('test_tmp_dir') lp_file = lp_dir.join('plugin.spec') with open(lp_file.strpath, 'w') as fp: yaml.dump(plugin_spec, fp, default_flow_style=True) try: with pytest.raises(IRFailedToAddPlugin): InfraredPlugin.spec_validator(lp_file.strpath) finally: lp_dir.remove()