protected void writePluginsStatic(final Configuration configuration, final Path outputDirectory) throws IOException { final Path pluginsFolder = outputDirectory.resolve(Constants.PLUGINS_DIR); for (Plugin plugin : configuration.getPlugins()) { final Path pluginDirectory = Files.createDirectories(pluginsFolder.resolve(plugin.getConfig().getId())); plugin.unpackReportStatic(pluginDirectory); } }
/** * Generate Allure report data from directories with allure report results. * * @param args a list of directory paths. First (args.length - 1) arguments - * results directories, last argument - the folder to generated data */ public static void main(final String... args) throws IOException { if (args.length < MIN_ARGUMENTS_COUNT) { LOGGER.error("There must be at least two arguments"); return; } final int lastIndex = args.length - 1; final Path[] files = getFiles(args); final List<Plugin> plugins = loadPlugins(); LOGGER.info("Found {} plugins", plugins.size()); plugins.forEach(plugin -> LOGGER.info(plugin.getConfig().getName())); final Configuration configuration = new ConfigurationBuilder() .fromExtensions(EXTENSIONS) .fromPlugins(plugins) .build(); final ReportGenerator generator = new ReportGenerator(configuration); generator.generate(files[lastIndex], Arrays.copyOf(files, lastIndex)); }
@Test public void shouldLoadJarsInLibDirectory() throws Exception { final Path pluginFolder = folder.newFolder().toPath(); add(pluginFolder, "plugin.jar", "lib/plugin.jar"); add(pluginFolder, "dummy-plugin.yml", "allure-plugin.yml"); final Optional<Plugin> loaded = pluginLoader.loadPlugin(getClass().getClassLoader(), pluginFolder); assertThat(loaded) .isPresent(); final Plugin plugin = loaded.get(); assertThat(plugin.getConfig()) .isNotNull() .hasFieldOrPropertyWithValue("id", "packages") .hasFieldOrPropertyWithValue("name", "Packages aggregator") .hasFieldOrPropertyWithValue("description", "The aggregator adds packages tab to the report"); assertThat(plugin.getExtensions()) .isNotNull() .hasSize(1); final Extension extension = plugin.getExtensions().get(0); assertThat(extension) .isNotNull() .isInstanceOf(Aggregator.class); assertThat(extension.getClass().getCanonicalName()) .isEqualTo("io.qameta.allure.packages.PackagesPlugin"); }
@Test public void shouldLoadPluginExtensions() throws Exception { final Path pluginFolder = folder.newFolder().toPath(); add(pluginFolder, "plugin.jar", "plugin.jar"); add(pluginFolder, "dummy-plugin.yml", "allure-plugin.yml"); final Optional<Plugin> loaded = pluginLoader.loadPlugin(getClass().getClassLoader(), pluginFolder); assertThat(loaded) .isPresent(); final Plugin plugin = loaded.get(); assertThat(plugin.getConfig()) .isNotNull() .hasFieldOrPropertyWithValue("id", "packages") .hasFieldOrPropertyWithValue("name", "Packages aggregator") .hasFieldOrPropertyWithValue("description", "The aggregator adds packages tab to the report"); assertThat(plugin.getExtensions()) .isNotNull() .hasSize(1); final Extension extension = plugin.getExtensions().get(0); assertThat(extension) .isNotNull() .isInstanceOf(Aggregator.class); assertThat(extension.getClass().getCanonicalName()) .isEqualTo("io.qameta.allure.packages.PackagesPlugin"); }
@Test public void shouldLoadStaticOnlyPlugin() throws Exception { final Path pluginFolder = folder.newFolder().toPath(); add(pluginFolder, "static-file.txt", "static/some-file"); add(pluginFolder, "dummy-plugin2.yml", "allure-plugin.yml"); final Optional<Plugin> loaded = pluginLoader.loadPlugin(getClass().getClassLoader(), pluginFolder); assertThat(loaded) .isPresent(); final Plugin plugin = loaded.get(); assertThat(plugin.getConfig()) .isNotNull() .hasFieldOrPropertyWithValue("id", "dummy"); assertThat(plugin.getExtensions()) .isNotNull() .isEmpty(); final Path unpack = folder.newFolder().toPath(); plugin.unpackReportStatic(unpack); assertThat(unpack.resolve("some-file")) .isRegularFile() .hasContent("ho-ho-ho"); }
protected void writePluginsStatic(final Configuration configuration, final Path outputDirectory) throws IOException { final Path pluginsFolder = outputDirectory.resolve(Constants.PLUGINS_DIR); for (Plugin plugin : configuration.getPlugins()) { final Path pluginDirectory = Files.createDirectories(pluginsFolder.resolve(plugin.getConfig().getId())); plugin.unpackReportStatic(pluginDirectory); } }
/** * Generate Allure report data from directories with allure report results. * * @param args a list of directory paths. First (args.length - 1) arguments - * results directories, last argument - the folder to generated data */ public static void main(final String... args) throws IOException { if (args.length < MIN_ARGUMENTS_COUNT) { LOGGER.error("There must be at least two arguments"); return; } final int lastIndex = args.length - 1; final Path[] files = getFiles(args); final List<Plugin> plugins = loadPlugins(); LOGGER.info("Found {} plugins", plugins.size()); plugins.forEach(plugin -> LOGGER.info(plugin.getConfig().getName())); final Configuration configuration = new ConfigurationBuilder() .fromExtensions(EXTENSIONS) .fromPlugins(plugins) .build(); final ReportGenerator generator = new ReportGenerator(configuration); generator.generate(files[lastIndex], Arrays.copyOf(files, lastIndex)); }