diff --git a/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/CliOptions.java b/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/CliOptions.java index 591ccac33..5faca2f14 100644 --- a/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/CliOptions.java +++ b/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/CliOptions.java @@ -89,6 +89,11 @@ public class CliOptions { "If not set, see includePlugins behaviour.") private String excludePlugins = null; + @Parameter(names = "-excludeHooks", + description = "Comma separated list of hooks to NOT execute.\n" + + "If not set, all hooks will be executed.") + private String excludeHooks = null; + @Parameter(names = "-fallbackGitHubOrganization", description = "Include an alternative organization to use as a fallback to download the plugin.\n" + "It is useful to use your own fork releases for an specific plugin if the " + @@ -205,6 +210,10 @@ public String getExcludePlugins() { return excludePlugins; } + public String getExcludeHooks() { + return excludeHooks; + } + public String getFallbackGitHubOrganization() { return fallbackGitHubOrganization; } diff --git a/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/PluginCompatTesterCli.java b/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/PluginCompatTesterCli.java index bd3a8125e..dd6253440 100644 --- a/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/PluginCompatTesterCli.java +++ b/plugins-compat-tester-cli/src/main/java/org/jenkins/tools/test/PluginCompatTesterCli.java @@ -114,6 +114,9 @@ public static void main(String[] args) throws IOException, PlexusContainerExcept if(options.getExcludePlugins() != null && !options.getExcludePlugins().isEmpty()){ config.setExcludePlugins(Arrays.asList(options.getExcludePlugins().toLowerCase().split(","))); } + if(options.getExcludeHooks() != null && !options.getExcludeHooks().isEmpty()){ + config.setExcludeHooks(Arrays.asList(options.getExcludeHooks().split(","))); + } if(options.getSkipTestCache() != null){ config.setSkipTestCache(Boolean.parseBoolean(options.getSkipTestCache())); } diff --git a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java index 9e6bfef68..4fa7c4ea2 100644 --- a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java +++ b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java @@ -102,6 +102,10 @@ public class PluginCompatTesterConfig { // If null, tests will be performed on every includePlugins found private List excludePlugins = null; + // List of hooks that will not be executed + // If null, all hooks will be executed + private List excludeHooks = null; + // URL to be used as an alternative to download plugin source from fallback // organtizations, like your own fork private String fallbackGitHubOrganization = null; @@ -247,6 +251,14 @@ public void setExcludePlugins(List excludePlugins) { this.excludePlugins = excludePlugins; } + public List getExcludeHooks() { + return excludeHooks; + } + + public void setExcludeHooks(List excludeHooks) { + this.excludeHooks = excludeHooks; + } + public String getFallbackGitHubOrganization() { return fallbackGitHubOrganization; } diff --git a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java index 4977df495..34758b319 100644 --- a/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java +++ b/plugins-compat-tester-model/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java @@ -31,6 +31,7 @@ public class PluginCompatTesterHooks { private Set classLoaders = new HashSet<>(Collections.singletonList(PluginCompatTesterHooks.class.getClassLoader())); private List hookPrefixes = new ArrayList<>(); private static Map>> hooksByType = new HashMap<>(); + private List excludeHooks = new ArrayList<>(); /** * Create and prepopulate the various hooks for this run of Plugin Compatibility Tester. @@ -44,9 +45,16 @@ public PluginCompatTesterHooks(List extraPrefixes) { } public PluginCompatTesterHooks(List extraPrefixes, List externalJars) throws MalformedURLException { + this(extraPrefixes, externalJars, Collections.emptyList()); + } + + public PluginCompatTesterHooks(List extraPrefixes, List externalJars, List excludeHooks) throws MalformedURLException { setupPrefixes(extraPrefixes); setupExternalClassLoaders(externalJars); setupHooksByType(); + if (excludeHooks != null) { + this.excludeHooks.addAll(excludeHooks); + } } private void setupHooksByType() { @@ -95,7 +103,7 @@ private Map runHooks(String stage, Map elements) for(PluginCompatTesterHook hook : beforeHooks) { try { System.out.println("Processing " + hook.getClass().getName()); - if(hook.check(elements)) { + if(!excludeHooks.contains(hook.getClass().getName()) && hook.check(elements)) { elements = hook.action(elements); hook.validate(elements); } else { diff --git a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java index 3607df148..6cfde8f7a 100644 --- a/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java +++ b/plugins-compat-tester/src/main/java/org/jenkins/tools/test/PluginCompatTester.java @@ -176,7 +176,7 @@ public PluginCompatReport testPlugins() splitCycles = HISTORICAL_SPLIT_CYCLES; } - PluginCompatTesterHooks pcth = new PluginCompatTesterHooks(config.getHookPrefixes(), config.getExternalHooksJars()); + PluginCompatTesterHooks pcth = new PluginCompatTesterHooks(config.getHookPrefixes(), config.getExternalHooksJars(), config.getExcludeHooks()); // Providing XSL Stylesheet along xml report file if(config.reportFile != null){ if(config.isProvideXslReport()){ diff --git a/plugins-compat-tester/src/test/java/org/jenkins/tools/test/PluginCompatTesterTest.java b/plugins-compat-tester/src/test/java/org/jenkins/tools/test/PluginCompatTesterTest.java index 0dcbaffdc..52de03b27 100644 --- a/plugins-compat-tester/src/test/java/org/jenkins/tools/test/PluginCompatTesterTest.java +++ b/plugins-compat-tester/src/test/java/org/jenkins/tools/test/PluginCompatTesterTest.java @@ -246,6 +246,7 @@ private PluginCompatTesterConfig getConfig(List includedPlugins) throws config.setIncludePlugins(includedPlugins); config.setExcludePlugins(Collections.emptyList()); + config.setExcludeHooks(Collections.emptyList()); config.setSkipTestCache(true); config.setCacheThresholdStatus(TestStatus.TEST_FAILURES); config.setTestCacheTimeout(345600000);