diff --git a/pom.xml b/pom.xml
index 15114b14f..168f7fc03 100644
--- a/pom.xml
+++ b/pom.xml
@@ -233,6 +233,10 @@
org.antlr
antlr4-runtime
+
+ org.apache.ant
+ ant
+
org.apache.commons
commons-compress
@@ -327,6 +331,12 @@
org.reflections
reflections
0.10.2
+
+
+ com.google.code.findbugs
+ jsr305
+
+
junit
diff --git a/src/main/java/org/jenkins/tools/test/CliOptions.java b/src/main/java/org/jenkins/tools/test/CliOptions.java
index ddef962ff..8028d11ea 100644
--- a/src/main/java/org/jenkins/tools/test/CliOptions.java
+++ b/src/main/java/org/jenkins/tools/test/CliOptions.java
@@ -29,8 +29,6 @@
import java.util.ArrayList;
import java.util.List;
-import javax.annotation.CheckForNull;
-
import org.jenkins.tools.test.model.PCTPlugin;
import org.jenkins.tools.test.model.TestStatus;
@@ -39,9 +37,11 @@
import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
+import edu.umd.cs.findbugs.annotations.CheckForNull;
+import edu.umd.cs.findbugs.annotations.NonNull;
+
import hudson.util.VersionNumber;
import java.util.Collections;
-import javax.annotation.Nonnull;
/**
* POJO containing CLI arguments & help.
@@ -232,7 +232,7 @@ public String getMavenPropertiesFile() {
return mavenPropertiesFile;
}
- @Nonnull
+ @NonNull
public List getMavenOptions() {
return mavenOptions != null ? Collections.unmodifiableList(mavenOptions) : Collections.emptyList();
}
diff --git a/src/main/java/org/jenkins/tools/test/PluginCompatTester.java b/src/main/java/org/jenkins/tools/test/PluginCompatTester.java
index a2adf6ea0..13ffeacf3 100644
--- a/src/main/java/org/jenkins/tools/test/PluginCompatTester.java
+++ b/src/main/java/org/jenkins/tools/test/PluginCompatTester.java
@@ -25,8 +25,7 @@
*/
package org.jenkins.tools.test;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
+import edu.umd.cs.findbugs.annotations.NonNull;
import hudson.AbortException;
import hudson.Functions;
import hudson.model.UpdateSite;
@@ -39,7 +38,9 @@
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.UncheckedIOException;
import java.lang.reflect.Constructor;
+import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
@@ -65,7 +66,6 @@
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import javax.annotation.Nonnull;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
@@ -189,7 +189,7 @@ public PluginCompatReport testPlugins()
// Scan bundled plugins
// If there is any bundled plugin, only these plugins will be taken under the consideration for the PCT run
- UpdateSite.Data data = null;
+ UpdateSite.Data data;
if (config.getBom() != null) {
data = scanBom(pluginGroupIds, "([^/.]+)[.][hj]pi");
} else {
@@ -457,7 +457,7 @@ private TestExecutionResult testPluginAgainst(MavenCoordinates coreCoordinates,
System.out.println(String.format("%n%n%n%n%n"));
File pluginCheckoutDir = new File(config.workDirectory.getAbsolutePath() + File.separator + plugin.name + File.separator);
- String parentFolder = StringUtils.EMPTY;
+ String parentFolder = "";
try {
// Run any precheckout hooks
@@ -534,7 +534,7 @@ private TestExecutionResult testPluginAgainst(MavenCoordinates coreCoordinates,
beforeCompile.put("pomData", pomData);
beforeCompile.put("config", config);
beforeCompile.put("core", coreCoordinates);
- if (StringUtils.isNotEmpty(parentFolder)) {
+ if (parentFolder != null && !parentFolder.isEmpty()) {
beforeCompile.put("parentFolder", parentFolder);
}
Map hookInfo = pcth.runBeforeCompilation(beforeCompile);
@@ -573,7 +573,7 @@ private TestExecutionResult testPluginAgainst(MavenCoordinates coreCoordinates,
List args = new ArrayList<>();
Map userProperties = mconfig.userProperties;
- args.add(String.format("--define=forkCount=%s",userProperties.containsKey("forkCount") ? userProperties.get("forkCount") : "1"));
+ args.add(String.format("--define=forkCount=%s", userProperties.getOrDefault("forkCount", "1")));
args.add("hpi:resolve-test-dependencies");
args.add("hpi:test-hpl");
args.add("surefire:test");
@@ -597,7 +597,7 @@ private TestExecutionResult testPluginAgainst(MavenCoordinates coreCoordinates,
userProperties.put("types", String.join(",", types));
// Execute with tests
- runner.run(mconfig, pluginCheckoutDir, buildLogFile, args.toArray(new String[args.size()]));
+ runner.run(mconfig, pluginCheckoutDir, buildLogFile, args.toArray(new String[0]));
return new TestExecutionResult(((PomData)forExecutionHooks.get("pomData")).getWarningMessages(), new ExecutedTestNamesSolver().solve(types, runner.getExecutedTests(), pluginCheckoutDir));
} catch (ExecutedTestNamesSolverException e) {
throw new PomExecutionException(e);
@@ -614,13 +614,13 @@ private TestExecutionResult testPluginAgainst(MavenCoordinates coreCoordinates,
public void cloneFromSCM(PomData pomData, String name, String version, File checkoutDirectory, String tag) throws ComponentLookupException, ScmException, IOException {
String scmTag = !(tag.equals("")) ? tag : getScmTag(pomData, name, version);
String connectionURLPomData = pomData.getConnectionUrl();
- List connectionURLs = new ArrayList();
+ List connectionURLs = new ArrayList<>();
connectionURLs.add(connectionURLPomData);
if(config.getFallbackGitHubOrganization() != null){
connectionURLs = getFallbackConnectionURL(connectionURLs, connectionURLPomData, config.getFallbackGitHubOrganization());
}
- Boolean repositoryCloned = false;
+ boolean repositoryCloned = false;
String errorMessage = "";
ScmRepository repository;
ScmManager scmManager = SCMManagerFactory.getInstance().createScmManager();
@@ -686,12 +686,17 @@ private boolean onlyOnePluginIncluded() {
*/
private UpdateSite.Data extractUpdateCenterData(Map groupIDs){
URL url;
- String jsonp;
try {
url = new URL(config.updateCenterUrl);
- jsonp = IOUtils.toString(url.openStream());
+ } catch (MalformedURLException e) {
+ throw new UncheckedIOException(e);
+ }
+
+ String jsonp;
+ try (InputStream is = url.openStream()) {
+ jsonp = new String(is.readAllBytes(), Charset.defaultCharset());
}catch(IOException e){
- throw new RuntimeException("Invalid update center url : "+config.updateCenterUrl, e);
+ throw new UncheckedIOException("Invalid Update Center URL: " + config.updateCenterUrl, e);
}
String json = jsonp.substring(jsonp.indexOf('(')+1,jsonp.lastIndexOf(')'));
@@ -775,7 +780,7 @@ private UpdateSite.Data scanBom(HashMap pluginGroupIds, String p
if (!top.has("core")) {
// Not all boms have the jenkins core dependency explicit, so, assume the bom version matches the jenkins version
String core = solveCoreVersionFromBom();
- if (StringUtils.isEmpty(core)) {
+ if (core == null || core.isEmpty()) {
throw new IllegalStateException("Unable to retrieve any version for the core");
}
top.put("core", new JSONObject().accumulate("name", "core").accumulate("version",core).accumulate("url", "https://foobar"));
@@ -800,8 +805,6 @@ private List getBomEntries() throws IOException, XmlPullParserException, P
/**
* @return Provides the core version from the bomfile and in case it is not found, the bom version, if bom version does not exist, it provides from its parent
- * @throws IOException
- * @throws XmlPullParserException
*/
private String solveCoreVersionFromBom() throws IOException, XmlPullParserException {
Model model = new MavenBom(config.getBom()).getModel();
@@ -816,14 +819,12 @@ private String solveCoreVersionFromBom() throws IOException, XmlPullParserExcept
private String solveVersionFromModel(Model model) {
String version = model.getVersion();
Parent parent = model.getParent();
- return version != null ? version : parent != null ? parent.getVersion() : StringUtils.EMPTY;
+ return version != null ? version : parent != null ? parent.getVersion() : "";
}
/**
* Given a value and a model, it checks if it is an interpolated value. In negative case it returns the same
* value. In affirmative case, it retrieves its value from the properties of the Maven model.
- * @param model
- * @param version
* @return the effective value of an specific value in a model
*/
private String getProperty(Model model, String value) {
@@ -846,7 +847,7 @@ private String getProperty(Model model, String value) {
* in the war file
* @return Update center data
*/
- private UpdateSite.Data scanWAR(File war, @Nonnull Map pluginGroupIds, String pluginRegExp) throws IOException {
+ private UpdateSite.Data scanWAR(File war, @NonNull Map pluginGroupIds, String pluginRegExp) throws IOException {
JSONObject top = new JSONObject();
top.put("id", DEFAULT_SOURCE_ID);
JSONObject plugins = new JSONObject();
@@ -936,19 +937,19 @@ public static String getMavenModule(String plugin, File pluginPath, MavenRunner
if (absolutePath.endsWith(plugin)) {
return plugin;
}
- String module = absolutePath.substring(absolutePath.lastIndexOf(File.separatorChar) + 1, absolutePath.length());
+ String module = absolutePath.substring(absolutePath.lastIndexOf(File.separatorChar) + 1);
File parentFile = pluginPath.getParentFile();
if (parentFile == null) {
return null;
}
File log = new File(parentFile.getAbsolutePath() + File.separatorChar + "modules.log");
runner.run(mavenConfig, parentFile, log, "-Dexpression=project.modules", "-q", "-DforceStdout", "help:evaluate");
- for (String line : org.apache.commons.io.FileUtils.readLines(log)) {
+ for (String line : Files.readAllLines(log.toPath(), Charset.defaultCharset())) {
if (!StringUtils.startsWith(line.trim(), "")) {
continue;
}
String mvnModule = line.replace("", "").replace("", "").trim();
- if (StringUtils.contains(mvnModule, module)) {
+ if (mvnModule != null && mvnModule.contains(module)) {
return mvnModule;
}
}
@@ -961,11 +962,11 @@ private void addSplitPluginDependencies(String thisPlugin, MavenRunner.Config mc
Map pluginDeps = new HashMap<>();
Map pluginDepsTest = new HashMap<>();
try {
- if (StringUtils.isBlank(parentFolder)) {
+ if (parentFolder == null || parentFolder.isBlank()) {
runner.run(mconfig, pluginCheckoutDir, tmp, "dependency:resolve");
} else {
String mavenModule = getMavenModule(thisPlugin, pluginCheckoutDir, runner, mconfig);
- if (StringUtils.isBlank(mavenModule)) {
+ if (mavenModule == null || mavenModule.isBlank()) {
throw new IOException(String.format("Unable to retrieve the Maven module for plugin %s on %s", thisPlugin, pluginCheckoutDir));
}
runner.run(mconfig, pluginCheckoutDir.getParentFile(), tmp, "dependency:resolve", "-am", "-pl", mavenModule);
@@ -1227,7 +1228,7 @@ private List removeSplitsBasedOnJDK(List splits, JavaSpecificati
private static Stream configLines(InputStream is) throws IOException {
return IOUtils.readLines(is, StandardCharsets.UTF_8).stream().filter(line -> !line.matches("#.*|\\s*"));
}
- private static final ImmutableList HISTORICAL_SPLITS = ImmutableList.of(
+ private static final List HISTORICAL_SPLITS = List.of(
"maven-plugin 1.296 1.296",
"subversion 1.310 1.0",
"cvs 1.340 0.1",
@@ -1245,7 +1246,7 @@ private static Stream configLines(InputStream is) throws IOException {
"bouncycastle-api 2.16 2.16.0",
"command-launcher 2.86 1.0"
);
- private static final ImmutableSet HISTORICAL_SPLIT_CYCLES = ImmutableSet.of(
+ private static final Set HISTORICAL_SPLIT_CYCLES = Set.of(
"script-security matrix-auth",
"script-security windows-slaves",
"script-security antisamy-markup-formatter",
diff --git a/src/main/java/org/jenkins/tools/test/PluginCompatTesterCli.java b/src/main/java/org/jenkins/tools/test/PluginCompatTesterCli.java
index c4e45524a..0cc89e15c 100644
--- a/src/main/java/org/jenkins/tools/test/PluginCompatTesterCli.java
+++ b/src/main/java/org/jenkins/tools/test/PluginCompatTesterCli.java
@@ -31,8 +31,8 @@
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
-import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.codehaus.plexus.PlexusContainerException;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
@@ -118,13 +118,13 @@ public static void main(String[] args) throws IOException, PlexusContainerExcept
config.setExternalMaven(options.getExternalMaven());
if(options.getIncludePlugins() != null && !options.getIncludePlugins().isEmpty()){
- config.setIncludePlugins(Arrays.asList(options.getIncludePlugins().toLowerCase().split(",")));
+ config.setIncludePlugins(List.of(options.getIncludePlugins().toLowerCase().split(",")));
}
if(options.getExcludePlugins() != null && !options.getExcludePlugins().isEmpty()){
- config.setExcludePlugins(Arrays.asList(options.getExcludePlugins().toLowerCase().split(",")));
+ config.setExcludePlugins(List.of(options.getExcludePlugins().toLowerCase().split(",")));
}
if(options.getExcludeHooks() != null && !options.getExcludeHooks().isEmpty()){
- config.setExcludeHooks(Arrays.asList(options.getExcludeHooks().split(",")));
+ config.setExcludeHooks(List.of(options.getExcludeHooks().split(",")));
}
if(options.getSkipTestCache() != null){
config.setSkipTestCache(Boolean.parseBoolean(options.getSkipTestCache()));
@@ -136,7 +136,7 @@ public static void main(String[] args) throws IOException, PlexusContainerExcept
config.setCacheThresholdStatus(TestStatus.valueOf(options.getCacheThresholdStatus()));
}
if(options.getHookPrefixes() != null && !options.getHookPrefixes().isEmpty()){
- config.setHookPrefixes(Arrays.asList(options.getHookPrefixes().split(",")));
+ config.setHookPrefixes(List.of(options.getHookPrefixes().split(",")));
}
if(options.getExternalHooksJars() != null && !options.getExternalHooksJars().isEmpty()){
config.setExternalHooksJars(options.getExternalHooksJars());
diff --git a/src/main/java/org/jenkins/tools/test/exception/PomExecutionException.java b/src/main/java/org/jenkins/tools/test/exception/PomExecutionException.java
index ae82ed754..675629ef3 100644
--- a/src/main/java/org/jenkins/tools/test/exception/PomExecutionException.java
+++ b/src/main/java/org/jenkins/tools/test/exception/PomExecutionException.java
@@ -32,9 +32,6 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-
import org.jenkins.tools.test.util.ExecutedTestNamesDetails;
/**
@@ -49,7 +46,7 @@ public class PomExecutionException extends Exception {
private final ExecutedTestNamesDetails testDetails;
public PomExecutionException(Throwable cause) {
- this(cause.toString(), Collections.emptyList(), Collections.singletonList(cause), Collections.emptyList(), new ExecutedTestNamesDetails());
+ this(cause.toString(), Collections.emptyList(), List.of(cause), Collections.emptyList(), new ExecutedTestNamesDetails());
}
public PomExecutionException(PomExecutionException exceptionToCopy){
diff --git a/src/main/java/org/jenkins/tools/test/hook/AbstractMultiParentHook.java b/src/main/java/org/jenkins/tools/test/hook/AbstractMultiParentHook.java
index aa479cf3f..e4b79b635 100644
--- a/src/main/java/org/jenkins/tools/test/hook/AbstractMultiParentHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/AbstractMultiParentHook.java
@@ -11,12 +11,10 @@
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmTag;
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
-import org.apache.maven.scm.manager.NoSuchScmProviderException;
import org.apache.maven.scm.manager.ScmManager;
import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.maven.scm.repository.ScmRepositoryException;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.util.FileUtils;
+import org.apache.commons.io.FileUtils;
import org.jenkins.tools.test.PluginCompatTester;
import org.jenkins.tools.test.SCMManagerFactory;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
@@ -82,15 +80,15 @@ public Map action(Map moreInfo) throws Exception
}
private void cloneFromSCM(UpdateSite.Plugin currentPlugin, File parentPath, String scmTag, String url, String fallbackGitHubOrganization)
- throws ComponentLookupException, ScmRepositoryException, NoSuchScmProviderException, ScmException, IOException {
+ throws ComponentLookupException, ScmException, IOException {
- List connectionURLs = new ArrayList();
+ List connectionURLs = new ArrayList<>();
connectionURLs.add(url);
if(fallbackGitHubOrganization != null){
connectionURLs = PluginCompatTester.getFallbackConnectionURL(connectionURLs, url, fallbackGitHubOrganization);
}
- Boolean repositoryCloned = false;
+ boolean repositoryCloned = false;
String errorMessage = "";
ScmRepository repository;
ScmManager scmManager = SCMManagerFactory.getInstance().createScmManager();
diff --git a/src/main/java/org/jenkins/tools/test/hook/ExampleMultiParent.java b/src/main/java/org/jenkins/tools/test/hook/ExampleMultiParent.java
index 5f6fcdaf4..987e79a0f 100644
--- a/src/main/java/org/jenkins/tools/test/hook/ExampleMultiParent.java
+++ b/src/main/java/org/jenkins/tools/test/hook/ExampleMultiParent.java
@@ -2,7 +2,6 @@
import hudson.model.UpdateSite.Plugin;
import java.io.File;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -24,7 +23,7 @@
public class ExampleMultiParent { //extends PluginCompatTesterHookBeforeCheckout {
private String parentUrl = "scm:git:git@github.com:jenkinsci/parent_repo.git";
private String parentName = "parent_repo";
- private List allBundlePlugins = Arrays.asList("possible", "plugins");
+ private List allBundlePlugins = List.of("possible", "plugins");
boolean firstRun = true;
public ExampleMultiParent() {}
diff --git a/src/main/java/org/jenkins/tools/test/hook/JacocoHook.java b/src/main/java/org/jenkins/tools/test/hook/JacocoHook.java
index 9078fc2fd..92a768818 100644
--- a/src/main/java/org/jenkins/tools/test/hook/JacocoHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/JacocoHook.java
@@ -19,7 +19,7 @@ public boolean check(Map info) {
}
@Override
- public Map action(Map info) throws Exception {
+ public Map action(Map info) {
List args = (List) info.get("args");
if (args != null) {
diff --git a/src/main/java/org/jenkins/tools/test/hook/MultiParentCompileHook.java b/src/main/java/org/jenkins/tools/test/hook/MultiParentCompileHook.java
index ae828753a..e774b6192 100644
--- a/src/main/java/org/jenkins/tools/test/hook/MultiParentCompileHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/MultiParentCompileHook.java
@@ -7,6 +7,7 @@
import java.io.File;
import java.io.IOException;
+import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
@@ -121,7 +122,7 @@ private void compile(MavenRunner.Config mavenConfig, File path, File localChecko
// "process-test-classes" not working properly on multi-module plugin. See https://issues.jenkins.io/browse/JENKINS-62658
// installs dependencies into local repository
String mavenModule = getMavenModule(pluginName, path, runner, mavenConfig);
- if (StringUtils.isBlank(mavenModule)) {
+ if (mavenModule == null || mavenModule.isBlank()) {
throw new IOException(String.format("Unable to retrieve the Maven module for plugin %s on %s", pluginName, path));
}
runner.run(mavenConfig, path.getParentFile(), setupCompileResources(path.getParentFile()), "clean", "install", "-DskipTests", "-Dinvoker.skip", "-Denforcer.skip", "-Dmaven.javadoc.skip", "-am", "-pl", mavenModule);
@@ -138,7 +139,7 @@ private boolean isSnapshotMultiParentPlugin(String parentFolder, File path, File
if (localCheckoutDir != null) {
return false;
}
- if (StringUtils.isBlank(parentFolder)) {
+ if (parentFolder == null || parentFolder.isBlank()) {
return false;
}
if (!path.getAbsolutePath().contains(parentFolder)) {
@@ -153,7 +154,7 @@ private boolean isSnapshotMultiParentPlugin(String parentFolder, File path, File
File log = new File(parentFile.getAbsolutePath() + File.separatorChar + "version.log");
runner.run(mavenConfig, parentFile, log, "-Dexpression=project.version", "-q", "-DforceStdout", "help:evaluate");
- List output = FileUtils.readLines(log);
+ List output = Files.readAllLines(log.toPath(), Charset.defaultCharset());
return output.get(output.size() - 1).endsWith("-SNAPSHOT");
}
diff --git a/src/main/java/org/jenkins/tools/test/hook/NodeCleanupBeforeCompileHook.java b/src/main/java/org/jenkins/tools/test/hook/NodeCleanupBeforeCompileHook.java
index 31f0c3ee3..31a45b8f5 100644
--- a/src/main/java/org/jenkins/tools/test/hook/NodeCleanupBeforeCompileHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/NodeCleanupBeforeCompileHook.java
@@ -1,7 +1,6 @@
package org.jenkins.tools.test.hook;
import org.apache.commons.io.FileUtils;
-import org.jenkins.tools.test.exception.PomExecutionException;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
import org.jenkins.tools.test.model.hook.PluginCompatTesterHookBeforeCompile;
@@ -14,7 +13,7 @@ public class NodeCleanupBeforeCompileHook extends PluginCompatTesterHookBeforeCo
@Override
public Map action(Map moreInfo) throws Exception {
PluginCompatTesterConfig config = (PluginCompatTesterConfig) moreInfo.get("config");
- boolean shouldExecuteHook = (config.getIncludePlugins().contains("sse-gateway") || (config.getIncludePlugins().contains("workflow-cps")));
+ boolean shouldExecuteHook = config.getIncludePlugins().contains("sse-gateway") || config.getIncludePlugins().contains("workflow-cps");
if (shouldExecuteHook) {
File pluginDir = (File) moreInfo.get("pluginDir");
@@ -37,7 +36,7 @@ public Map action(Map moreInfo) throws Exception
public void validate(Map toCheck) {
}
- private void compile(File path) throws PomExecutionException, IOException {
+ private void compile(File path) throws IOException {
System.out.println("Calling removeNodeFolders");
removeNodeFolders(path);
}
diff --git a/src/main/java/org/jenkins/tools/test/hook/NonStandardTagHook.java b/src/main/java/org/jenkins/tools/test/hook/NonStandardTagHook.java
index e716c93e7..3d8fbdece 100644
--- a/src/main/java/org/jenkins/tools/test/hook/NonStandardTagHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/NonStandardTagHook.java
@@ -9,12 +9,6 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import org.apache.maven.scm.ScmFileSet;
-import org.apache.maven.scm.ScmTag;
-import org.apache.maven.scm.command.checkout.CheckOutScmResult;
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.jenkins.tools.test.SCMManagerFactory;
import org.jenkins.tools.test.PluginCompatTester;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
import org.jenkins.tools.test.model.PomData;
diff --git a/src/main/java/org/jenkins/tools/test/hook/PipelineStageViewHook.java b/src/main/java/org/jenkins/tools/test/hook/PipelineStageViewHook.java
index 2e66fc745..090537e09 100644
--- a/src/main/java/org/jenkins/tools/test/hook/PipelineStageViewHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/PipelineStageViewHook.java
@@ -19,7 +19,7 @@ protected String getParentProjectName() {
@Override
protected String getPluginFolderName(UpdateSite.Plugin currentPlugin){
- return (currentPlugin.getDisplayName().equals("pipeline-rest-api")) ? "rest-api" : "ui";
+ return currentPlugin.getDisplayName().equals("pipeline-rest-api") ? "rest-api" : "ui";
}
@Override
diff --git a/src/main/java/org/jenkins/tools/test/hook/PluginWithFailsafeIntegrationTestsHook.java b/src/main/java/org/jenkins/tools/test/hook/PluginWithFailsafeIntegrationTestsHook.java
index 1e47a4824..133ddc930 100644
--- a/src/main/java/org/jenkins/tools/test/hook/PluginWithFailsafeIntegrationTestsHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/PluginWithFailsafeIntegrationTestsHook.java
@@ -1,9 +1,7 @@
package org.jenkins.tools.test.hook;
-import java.util.Arrays;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
/**
* Workaround for those plugins with integration tests since they need execute the failsafe:integration-test goal before execution.
@@ -12,12 +10,12 @@ public class PluginWithFailsafeIntegrationTestsHook extends PluginWithIntegratio
@Override
public Collection getGoals() {
- return Arrays.asList("failsafe:integration-test");
+ return List.of("failsafe:integration-test");
}
@Override
public Collection getTestTypes() {
- return Arrays.asList("failsafe");
+ return List.of("failsafe");
}
}
diff --git a/src/main/java/org/jenkins/tools/test/hook/PluginWithIntegrationTestsHook.java b/src/main/java/org/jenkins/tools/test/hook/PluginWithIntegrationTestsHook.java
index 2b91cdcbb..d812afc29 100644
--- a/src/main/java/org/jenkins/tools/test/hook/PluginWithIntegrationTestsHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/PluginWithIntegrationTestsHook.java
@@ -23,7 +23,7 @@ public abstract class PluginWithIntegrationTestsHook extends PluginCompatTesterH
@SuppressWarnings("unchecked")
@Override
- public Map action(Map info) throws Exception {
+ public Map action(Map info) {
List args = (List) info.get("args");
if (args != null) {
diff --git a/src/main/java/org/jenkins/tools/test/hook/SkipUIHelperPlugins.java b/src/main/java/org/jenkins/tools/test/hook/SkipUIHelperPlugins.java
index aeb488d45..204cd8002 100644
--- a/src/main/java/org/jenkins/tools/test/hook/SkipUIHelperPlugins.java
+++ b/src/main/java/org/jenkins/tools/test/hook/SkipUIHelperPlugins.java
@@ -1,6 +1,5 @@
package org.jenkins.tools.test.hook;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -17,7 +16,7 @@
* @see https://github.com/jenkinsci/js-libs
*/
public class SkipUIHelperPlugins extends PluginCompatTesterHookBeforeCheckout {
- private static List allBundlePlugins = Arrays.asList(
+ private static List allBundlePlugins = List.of(
"ace-editor", "bootstrap", "handlebars", "jquery-detached",
"js-module-base", "momentjs", "numeraljs");
@@ -35,7 +34,7 @@ public List transformedPlugins() {
@Override
public Map action(Map moreInfo) {
moreInfo.put("executionResult",
- new TestExecutionResult(Collections.singletonList("Plugin unsupported at this time, skipping")));
+ new TestExecutionResult(List.of("Plugin unsupported at this time, skipping")));
moreInfo.put("runCheckout", false);
return moreInfo;
}
diff --git a/src/main/java/org/jenkins/tools/test/hook/StructsHook.java b/src/main/java/org/jenkins/tools/test/hook/StructsHook.java
index 6f90c43b7..729f06dcb 100644
--- a/src/main/java/org/jenkins/tools/test/hook/StructsHook.java
+++ b/src/main/java/org/jenkins/tools/test/hook/StructsHook.java
@@ -3,7 +3,6 @@
import hudson.model.UpdateSite;
import hudson.util.VersionNumber;
import java.util.Map;
-import java.util.logging.Level;
import java.util.logging.Logger;
import org.jenkins.tools.test.model.PomData;
diff --git a/src/main/java/org/jenkins/tools/test/maven/ExternalMavenRunner.java b/src/main/java/org/jenkins/tools/test/maven/ExternalMavenRunner.java
index eaf5f777e..75abd013f 100644
--- a/src/main/java/org/jenkins/tools/test/maven/ExternalMavenRunner.java
+++ b/src/main/java/org/jenkins/tools/test/maven/ExternalMavenRunner.java
@@ -1,5 +1,7 @@
package org.jenkins.tools.test.maven;
+import edu.umd.cs.findbugs.annotations.CheckForNull;
+
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
@@ -9,7 +11,6 @@
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -18,8 +19,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.annotation.CheckForNull;
-
import org.jenkins.tools.test.exception.PomExecutionException;
import org.jenkins.tools.test.util.ExecutedTestNamesSolver;
@@ -66,7 +65,7 @@ public void run(Config config, File baseDirectory, File buildLogFile, String...
cmd.add("--define=" + entry);
}
cmd.addAll(config.mavenOptions);
- cmd.addAll(Arrays.asList(goals));
+ cmd.addAll(List.of(goals));
System.out.println("running " + cmd + " in " + baseDirectory + " >> " + buildLogFile);
try {
Process p = new ProcessBuilder(cmd).directory(baseDirectory).redirectErrorStream(true).start();
@@ -122,9 +121,7 @@ private Set getTypes(Config config) {
return result;
}
String types = config.userProperties.get("types");
- for (String type : types.split(",")) {
- result.add(type);
- }
+ result.addAll(List.of(types.split(",")));
return result;
}
diff --git a/src/main/java/org/jenkins/tools/test/model/MavenBom.java b/src/main/java/org/jenkins/tools/test/model/MavenBom.java
index 2987e6e9d..15c1bac6c 100644
--- a/src/main/java/org/jenkins/tools/test/model/MavenBom.java
+++ b/src/main/java/org/jenkins/tools/test/model/MavenBom.java
@@ -3,7 +3,6 @@
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -47,8 +46,6 @@ public File writeFullDepPom(File workDir) throws IOException {
try (FileOutputStream out = new FileOutputStream(fullDepPom)) {
writer.write(out, modified);
return fullDepPom;
- } catch (FileNotFoundException e) {
- e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
@@ -56,8 +53,7 @@ public File writeFullDepPom(File workDir) throws IOException {
}
public boolean containsDep(Dependency toCheck, Model model) {
- return model.getDependencies().stream().filter(dep -> getDepDescription(dep).equals(getDepDescription(toCheck)))
- .count() > 0;
+ return model.getDependencies().stream().anyMatch(dep -> getDepDescription(dep).equals(getDepDescription(toCheck)));
}
private String getDepDescription(Dependency toCheck) {
diff --git a/src/main/java/org/jenkins/tools/test/model/MavenCoordinates.java b/src/main/java/org/jenkins/tools/test/model/MavenCoordinates.java
index 85a122040..4517c8aad 100644
--- a/src/main/java/org/jenkins/tools/test/model/MavenCoordinates.java
+++ b/src/main/java/org/jenkins/tools/test/model/MavenCoordinates.java
@@ -25,10 +25,8 @@
*/
package org.jenkins.tools.test.model;
-import javax.annotation.Nonnull;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+import edu.umd.cs.findbugs.annotations.NonNull;
+import java.util.Objects;
import org.jenkins.tools.test.model.comparators.VersionComparator;
/**
@@ -47,7 +45,7 @@ public class MavenCoordinates implements Comparable {
*
* @throws IllegalArgumentException one of the parameters is invalid.
*/
- public MavenCoordinates(@Nonnull String groupId, @Nonnull String artifactId, @Nonnull String version){
+ public MavenCoordinates(@NonNull String groupId, @NonNull String artifactId, @NonNull String version){
this.groupId = verifyInput( groupId, artifactId, version,"groupId", groupId);
this.artifactId = verifyInput( groupId, artifactId, version,"artifactId", artifactId);
this.version = verifyInput( groupId, artifactId, version,"version", version);
@@ -55,7 +53,7 @@ public MavenCoordinates(@Nonnull String groupId, @Nonnull String artifactId, @No
private static String verifyInput(String groupId, String artifactId, String version,
String fieldName, String value) throws IllegalArgumentException {
- if (value == null || StringUtils.isBlank(value)) {
+ if (value == null || value.isBlank()) {
throw new IllegalArgumentException(
String.format("Invalid parameter passed for %s:%s:%s: Field %s; %s",
groupId, artifactId, version, fieldName, value));
@@ -65,16 +63,19 @@ private static String verifyInput(String groupId, String artifactId, String vers
@Override
public boolean equals(Object o){
- if (!(o instanceof MavenCoordinates)) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
return false;
}
MavenCoordinates c2 = (MavenCoordinates)o;
- return new EqualsBuilder().append(groupId, c2.groupId).append(artifactId, c2.artifactId).append(version, c2.version).isEquals();
+ return Objects.equals(groupId, c2.groupId) && Objects.equals(artifactId, c2.artifactId) && Objects.equals(version, c2.version);
}
@Override
public int hashCode(){
- return new HashCodeBuilder().append(groupId).append(artifactId).append(version).toHashCode();
+ return Objects.hash(groupId, artifactId, version);
}
@Override
diff --git a/src/main/java/org/jenkins/tools/test/model/MavenPom.java b/src/main/java/org/jenkins/tools/test/model/MavenPom.java
index ae7eabc4c..370d8b34b 100644
--- a/src/main/java/org/jenkins/tools/test/model/MavenPom.java
+++ b/src/main/java/org/jenkins/tools/test/model/MavenPom.java
@@ -25,6 +25,7 @@
*/
package org.jenkins.tools.test.model;
+import edu.umd.cs.findbugs.annotations.NonNull;
import hudson.util.VersionNumber;
import java.io.File;
import java.io.IOException;
@@ -42,7 +43,6 @@
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.annotation.Nonnull;
import org.apache.commons.lang.StringUtils;
import org.codehaus.plexus.util.FileUtils;
import org.dom4j.Document;
@@ -119,7 +119,7 @@ public void transformPom(MavenCoordinates coreCoordinates) throws PomTransformat
/**
* Removes the dependency if it exists.
*/
- public void removeDependency(@Nonnull String groupId, @Nonnull String artifactId) throws IOException {
+ public void removeDependency(@NonNull String groupId, @NonNull String artifactId) throws IOException {
File pom = new File(rootDir.getAbsolutePath() + "/" + pomFileName);
Document doc;
try {
@@ -132,7 +132,7 @@ public void removeDependency(@Nonnull String groupId, @Nonnull String artifactId
dependencies = doc.getRootElement().addElement("dependencies");
}
- for (Element mavenDependency : (List) dependencies.elements("dependency")) {
+ for (Element mavenDependency : dependencies.elements("dependency")) {
Element artifactIdElem = mavenDependency.element(ARTIFACT_ID_ELEMENT);
if (artifactIdElem == null || !artifactId.equalsIgnoreCase(artifactIdElem.getText())) {
continue;
@@ -151,9 +151,7 @@ public void removeDependency(@Nonnull String groupId, @Nonnull String artifactId
/**
* Create/Update a plugin management section with a set of plugins
- * @param pluginsToAdd
* @param includeGroupId - specify if we want to add the groupId or not
- * @throws IOException
*/
public void addPluginManagement(List pluginsToAdd, boolean includeGroupId) throws IOException {
File pom = new File(rootDir.getAbsolutePath() + "/" + pomFileName);
@@ -195,8 +193,6 @@ public void addPluginManagement(List pluginsToAdd, boolean inc
/**
* Create/Update the properties section adding/updating some of them
- * @param propertiesToAdd
- * @throws IOException
*/
public void addProperties(Properties propertiesToAdd) throws IOException {
File pom = new File(rootDir.getAbsolutePath() + "/" + pomFileName);
@@ -258,7 +254,7 @@ private void manageDependencies(Map toAdd, Map toAddTest, Map toReplaceTest,
Map pluginGroupIds, Document doc, Element dependencies, boolean addition) {
Set depsWithoutClassifier = new HashSet<>();
- for (Element mavenDependency : (List) dependencies.elements("dependency")) {
+ for (Element mavenDependency : dependencies.elements("dependency")) {
Element artifactId = mavenDependency.element(ARTIFACT_ID_ELEMENT);
if (mavenDependency.element(CLASSIFIER_ELEMENT) == null) {
depsWithoutClassifier.add(artifactId.getTextTrim());
@@ -268,7 +264,7 @@ private void manageDependencies(Map toAdd, Map toReplaceUsed = new LinkedHashMap<>();
Map toReplaceTestUsed = new LinkedHashMap<>();
- for (Element mavenDependency : (List) dependencies.elements("dependency")) {
+ for (Element mavenDependency : dependencies.elements("dependency")) {
Element artifactId = mavenDependency.element(ARTIFACT_ID_ELEMENT);
Element groupId = mavenDependency.element(GROUP_ID_ELEMENT);
if (artifactId == null || groupId == null) {
@@ -295,7 +291,7 @@ private void manageDependencies(Map toAdd, Map) properties.elements()) {
+ for (Element mavenProperty : properties.elements()) {
if (StringUtils.equals(property, mavenProperty.getQName().getName())) {
propertyToUpdate = mavenProperty;
break;
diff --git a/src/main/java/org/jenkins/tools/test/model/PCTPlugin.java b/src/main/java/org/jenkins/tools/test/model/PCTPlugin.java
index a0a841878..de9b07d6b 100644
--- a/src/main/java/org/jenkins/tools/test/model/PCTPlugin.java
+++ b/src/main/java/org/jenkins/tools/test/model/PCTPlugin.java
@@ -1,7 +1,7 @@
package org.jenkins.tools.test.model;
+import edu.umd.cs.findbugs.annotations.CheckForNull;
import hudson.util.VersionNumber;
-import javax.annotation.CheckForNull;
public class PCTPlugin {
private String name;
diff --git a/src/main/java/org/jenkins/tools/test/model/PluginCompatReport.java b/src/main/java/org/jenkins/tools/test/model/PluginCompatReport.java
index 346a07d96..df78270b3 100644
--- a/src/main/java/org/jenkins/tools/test/model/PluginCompatReport.java
+++ b/src/main/java/org/jenkins/tools/test/model/PluginCompatReport.java
@@ -27,6 +27,7 @@
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Xpp3DomDriver;
+import edu.umd.cs.findbugs.annotations.NonNull;
import hudson.util.XStream2;
import java.io.File;
import java.io.FileInputStream;
@@ -45,7 +46,6 @@
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
-import javax.annotation.Nonnull;
/**
* POJO allowing to store the Plugin Compatibility Tester report
@@ -97,19 +97,19 @@ public void save(File reportPath) throws IOException {
Files.move(tempReportPath.toPath(), reportPath.toPath(), StandardCopyOption.ATOMIC_MOVE);
}
- public static String getXslFilename(@Nonnull File reportPath){
+ public static String getXslFilename(@NonNull File reportPath){
return getBaseFilename(reportPath)+".xsl";
}
- public static File getXslFilepath(@Nonnull File reportPath){
+ public static File getXslFilepath(@NonNull File reportPath){
return new File(getBaseFilepath(reportPath)+".xsl");
}
- public static File getHtmlFilepath(@Nonnull File reportPath){
+ public static File getHtmlFilepath(@NonNull File reportPath){
return new File(getBaseFilepath(reportPath)+".html");
}
- public static String getBaseFilepath(@Nonnull File reportPath){
+ public static String getBaseFilepath(@NonNull File reportPath){
File parentFile = reportPath.getParentFile();
if (parentFile == null) {
throw new IllegalArgumentException("The report path " + reportPath + " does not have a directory specification. " +
@@ -159,7 +159,7 @@ public boolean isCompatTestResultAlreadyInCache(PluginInfos pluginInfos, MavenCo
* @return Report. If the file does not exist, an empty report will be returned
* @throws IOException Unexpected read error.
*/
- @Nonnull
+ @NonNull
public static PluginCompatReport fromXml(File reportPath) throws IOException {
PluginCompatReport report;
diff --git a/src/main/java/org/jenkins/tools/test/model/PluginCompatResult.java b/src/main/java/org/jenkins/tools/test/model/PluginCompatResult.java
index 1732e97df..a1d649ccd 100644
--- a/src/main/java/org/jenkins/tools/test/model/PluginCompatResult.java
+++ b/src/main/java/org/jenkins/tools/test/model/PluginCompatResult.java
@@ -27,13 +27,10 @@
import java.util.Collections;
import java.util.Date;
-import java.util.LinkedList;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-
/**
* POJO storing a plugin compatibility test result
*
@@ -76,16 +73,19 @@ private PluginCompatResult(MavenCoordinates coreCoordinates, TestStatus status,
@Override
public boolean equals(Object o){
- if (!(o instanceof PluginCompatResult)) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
return false;
}
PluginCompatResult res = (PluginCompatResult)o;
- return new EqualsBuilder().append(coreCoordinates, res.coreCoordinates).isEquals();
+ return Objects.equals(coreCoordinates, res.coreCoordinates);
}
@Override
public int hashCode(){
- return new HashCodeBuilder().append(coreCoordinates).toHashCode();
+ return Objects.hash(coreCoordinates);
}
@Override
diff --git a/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java b/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java
index f68be440e..0e3037502 100644
--- a/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java
+++ b/src/main/java/org/jenkins/tools/test/model/PluginCompatTesterConfig.java
@@ -25,6 +25,8 @@
*/
package org.jenkins.tools.test.model;
+import edu.umd.cs.findbugs.annotations.CheckForNull;
+import edu.umd.cs.findbugs.annotations.NonNull;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -35,10 +37,7 @@
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.jenkins.tools.test.util.StreamGobbler;
/**
* POJO used to configure Plugin Compatibility Tester execution
@@ -130,7 +129,7 @@ public class PluginCompatTesterConfig {
private List mavenOptions = Collections.emptyList();
// Classpath prefixes of the extra hooks
- private List hookPrefixes = new ArrayList<>(Collections.singletonList("org.jenkins"));
+ private List hookPrefixes = new ArrayList<>(List.of("org.jenkins"));
// External hooks jar files path locations
private List externalHooksJars = new ArrayList<>();
@@ -279,7 +278,7 @@ public void setFallbackGitHubOrganization(String fallbackGitHubOrganization) {
this.fallbackGitHubOrganization = fallbackGitHubOrganization;
}
- public void setMavenProperties(@Nonnull Map mavenProperties) {
+ public void setMavenProperties(@NonNull Map mavenProperties) {
this.mavenProperties = new HashMap<>(mavenProperties);
}
@@ -287,7 +286,7 @@ public void setMavenProperties(@Nonnull Map mavenProperties) {
* Gets a list of Maven properties defined in the configuration. It is not a full list of
* properties; {@link #retrieveMavenProperties()} should be used to construct it.
*/
- @Nonnull
+ @NonNull
public Map getMavenProperties() {
return Collections.unmodifiableMap(mavenProperties);
}
@@ -328,7 +327,7 @@ public Map retrieveMavenProperties() throws IOException {
Map res = new HashMap<>(mavenProperties);
// Read properties from File
- if ( StringUtils.isNotBlank( mavenPropertiesFile )) {
+ if (mavenPropertiesFile != null && !mavenPropertiesFile.isBlank()) {
File file = new File (mavenPropertiesFile);
if (file.exists() && file.isFile()) {
try(FileInputStream fileInputStream = new FileInputStream(file)) {
@@ -363,7 +362,7 @@ public Map retrieveMavenProperties() throws IOException {
}
// Merge test Java args if needed
- if (StringUtils.isNotBlank(testJavaArgs)) {
+ if (testJavaArgs != null && !testJavaArgs.isBlank()) {
if (res.containsKey("argLine")) {
System.out.println("WARNING: Maven properties already contain the 'argLine' argument. " +
"Merging value from properties and from the command line");
@@ -396,8 +395,19 @@ public String getTestJavaVersion() throws IOException {
LOGGER.info("testJdkHome unset, using java available from the PATH");
javaCmdAbsolutePath = "java";
}
- final Process process = new ProcessBuilder().command(javaCmdAbsolutePath, "-XshowSettings:properties -version").redirectErrorStream(true).start();
- final String javaVersionOutput = IOUtils.toString(process.getInputStream());
+ final Process process = new ProcessBuilder().command(javaCmdAbsolutePath, "-XshowSettings:properties", "-version").redirectErrorStream(true).start();
+ StreamGobbler gobbler = new StreamGobbler(process.getInputStream());
+ gobbler.start();
+ try {
+ int exitStatus = process.waitFor();
+ gobbler.join();
+ if (exitStatus != 0) {
+ throw new IOException("java -XshowSettings:properties -version failed with exit status " + exitStatus + ": " + gobbler.getOutput().trim());
+ }
+ } catch (InterruptedException e) {
+ throw new IOException("interrupted while getting Java version", e);
+ }
+ final String javaVersionOutput = gobbler.getOutput().trim();
final String[] lines = javaVersionOutput.split("[\\r\\n]+");
for (String line: lines) {
String trimmed = line.trim();
@@ -408,7 +418,18 @@ public String getTestJavaVersion() throws IOException {
}
// Default to fullversion output as before
final Process process2 = new ProcessBuilder().command(javaCmdAbsolutePath, "-fullversion").redirectErrorStream(true).start();
- final String javaVersionOutput2 = IOUtils.toString(process2.getInputStream());
+ StreamGobbler gobbler2 = new StreamGobbler(process2.getInputStream());
+ gobbler2.start();
+ try {
+ int exitStatus2 = process2.waitFor();
+ gobbler2.join();
+ if (exitStatus2 != 0) {
+ throw new IOException("java -fullversion failed with exit status " + exitStatus2 + ": " + gobbler2.getOutput().trim());
+ }
+ } catch (InterruptedException e) {
+ throw new IOException("interrupted while getting full Java version", e);
+ }
+ final String javaVersionOutput2 = gobbler2.getOutput().trim();
// Expected format is something like openjdk full version "1.8.0_181-8u181-b13-2~deb9u1-b13"
// We shorten it by removing the "full version" in the middle
return javaVersionOutput2.
diff --git a/src/main/java/org/jenkins/tools/test/model/PluginInfos.java b/src/main/java/org/jenkins/tools/test/model/PluginInfos.java
index 794b0c9a7..440af5a74 100644
--- a/src/main/java/org/jenkins/tools/test/model/PluginInfos.java
+++ b/src/main/java/org/jenkins/tools/test/model/PluginInfos.java
@@ -25,8 +25,8 @@
*/
package org.jenkins.tools.test.model;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+
+import java.util.Objects;
/**
* POJO describing a versioned plugin
@@ -46,16 +46,19 @@ public PluginInfos(String pluginName, String pluginVersion, String pluginUrl){
@Override
public boolean equals(Object o){
- if (!(o instanceof PluginInfos)) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
return false;
}
PluginInfos infos = (PluginInfos)o;
- return new EqualsBuilder().append(pluginName, infos.pluginName).append(pluginVersion, infos.pluginVersion).isEquals();
+ return Objects.equals(pluginName, infos.pluginName) && Objects.equals(pluginVersion, infos.pluginVersion);
}
@Override
public int hashCode(){
- return new HashCodeBuilder().append(pluginName).append(pluginVersion).toHashCode();
+ return Objects.hash(pluginName, pluginVersion);
}
@Override
diff --git a/src/main/java/org/jenkins/tools/test/model/PluginRemoting.java b/src/main/java/org/jenkins/tools/test/model/PluginRemoting.java
index d8ced4c13..2a7cdb1b2 100644
--- a/src/main/java/org/jenkins/tools/test/model/PluginRemoting.java
+++ b/src/main/java/org/jenkins/tools/test/model/PluginRemoting.java
@@ -25,18 +25,21 @@
*/
package org.jenkins.tools.test.model;
+import edu.umd.cs.findbugs.annotations.CheckForNull;
+import edu.umd.cs.findbugs.annotations.NonNull;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.StringReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
@@ -47,9 +50,9 @@
import javax.xml.xpath.XPathFactory;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
-import org.apache.tools.ant.filters.StringInputStream;
import org.jenkins.tools.test.exception.PluginSourcesUnavailableException;
import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
@@ -130,7 +133,7 @@ private String retrievePomContentFromInputStream(InputStream pluginUrlStream) th
private String retrievePomContentFromXmlFile() throws PluginSourcesUnavailableException{
try {
- return FileUtils.readFileToString(pomFile);
+ return Files.readString(pomFile.toPath(), StandardCharsets.UTF_8);
} catch(Exception e) {
System.err.println("Error : " + e.getMessage());
throw new PluginSourcesUnavailableException(String.format("Problem while retrieving pom content from file %s", pomFile), e);
@@ -149,7 +152,7 @@ public PomData retrievePomData() throws PluginSourcesUnavailableException {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
- Document doc = builder.parse(new StringInputStream(pomContent));
+ Document doc = builder.parse(new InputSource(new StringReader(pomContent)));
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
@@ -166,7 +169,7 @@ public PomData retrievePomData() throws PluginSourcesUnavailableException {
packaging = StringUtils.trimToNull((String)packagingXPath.evaluate(doc, XPathConstants.STRING));
String parentNode = xpath.evaluate("/project/parent", doc);
- if (StringUtils.isNotBlank(parentNode)) {
+ if (parentNode != null && !parentNode.isBlank()) {
LOGGER.log(Level.INFO, parentNode);
parent = new MavenCoordinates(
getValueOrFail(doc, xpath, "/project/parent/groupId"),
@@ -197,7 +200,7 @@ public PomData retrievePomData() throws PluginSourcesUnavailableException {
*
* @throws IOException parsing error
*/
- @Nonnull
+ @NonNull
private static String getValueOrFail(Document doc, XPath xpath, String field) throws IOException {
String res;
try {
@@ -206,7 +209,7 @@ private static String getValueOrFail(Document doc, XPath xpath, String field) th
throw new IOException("Expression failed for the field " + field, e);
}
- if (StringUtils.isBlank(res)) {
+ if (res == null || res.isBlank()) {
throw new IOException("Field is either null or blank: " + field);
}
return res;
diff --git a/src/main/java/org/jenkins/tools/test/model/PomData.java b/src/main/java/org/jenkins/tools/test/model/PomData.java
index e5bc8ac19..370a34e25 100644
--- a/src/main/java/org/jenkins/tools/test/model/PomData.java
+++ b/src/main/java/org/jenkins/tools/test/model/PomData.java
@@ -25,10 +25,10 @@
*/
package org.jenkins.tools.test.model;
+import edu.umd.cs.findbugs.annotations.CheckForNull;
+import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.ArrayList;
import java.util.List;
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
/**
* POJO containing important data residing in plugin's POM
@@ -39,7 +39,7 @@ public class PomData {
public final String artifactId;
public final String groupId;
- @Nonnull
+ @NonNull
private final String packaging;
@CheckForNull
@@ -69,7 +69,7 @@ public List getWarningMessages() {
return warningMessages;
}
- @Nonnull
+ @NonNull
public String getPackaging() {
return packaging;
}
diff --git a/src/main/java/org/jenkins/tools/test/model/TestExecutionResult.java b/src/main/java/org/jenkins/tools/test/model/TestExecutionResult.java
index a183b87aa..869f05759 100644
--- a/src/main/java/org/jenkins/tools/test/model/TestExecutionResult.java
+++ b/src/main/java/org/jenkins/tools/test/model/TestExecutionResult.java
@@ -27,7 +27,6 @@
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import org.jenkins.tools.test.util.ExecutedTestNamesDetails;
diff --git a/src/main/java/org/jenkins/tools/test/model/comparators/MavenCoordinatesComparator.java b/src/main/java/org/jenkins/tools/test/model/comparators/MavenCoordinatesComparator.java
deleted file mode 100644
index ce596a5e9..000000000
--- a/src/main/java/org/jenkins/tools/test/model/comparators/MavenCoordinatesComparator.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * The MIT License
- *
- * Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi,
- * Erik Ramfelt, Koichi Fujikawa, Red Hat, Inc., Seiji Sogabe,
- * Stephen Connolly, Tom Huybrechts, Yahoo! Inc., Alan Harder, CloudBees, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-package org.jenkins.tools.test.model.comparators;
-
-import java.io.Serializable;
-import java.util.Comparator;
-import org.jenkins.tools.test.model.MavenCoordinates;
-
-/**
- * Class used to compare MavenCoordinates
- *
- * @deprecated For backward compatibility only. Use {@link MavenCoordinates#compareTo} instead.
- * @author Frederic Camblor
- */
-public class MavenCoordinatesComparator implements Comparator, Serializable {
- @Override
- public int compare(MavenCoordinates o1, MavenCoordinates o2) {
- return o1.compareTo(o2);
- }
-}
diff --git a/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java b/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java
index 2ab5efad7..79a37177e 100644
--- a/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java
+++ b/src/main/java/org/jenkins/tools/test/model/hook/PluginCompatTesterHooks.java
@@ -7,7 +7,6 @@
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -29,7 +28,7 @@
* never be called.
*/
public class PluginCompatTesterHooks {
- private Set classLoaders = new HashSet<>(Collections.singletonList(PluginCompatTesterHooks.class.getClassLoader()));
+ private Set classLoaders = new HashSet<>(List.of(PluginCompatTesterHooks.class.getClassLoader()));
private List hookPrefixes = new ArrayList<>();
private static Map>> hooksByType = new HashMap<>();
private List excludeHooks = new ArrayList<>();
@@ -59,7 +58,7 @@ public PluginCompatTesterHooks(List extraPrefixes, List externalJa
}
private void setupHooksByType() {
- for(String stage : Arrays.asList("checkout", "execution", "compilation")) {
+ for (String stage : List.of("checkout", "execution", "compilation")) {
hooksByType.put(stage, findHooks(stage));
}
}
@@ -143,7 +142,7 @@ private Map> findHooks(String stage) {
// Search for all hooks defined within the given classpath prefix
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
- ClassLoader[] loaders = classLoaders.toArray(new ClassLoader[classLoaders.size()]);
+ ClassLoader[] loaders = classLoaders.toArray(new ClassLoader[0]);
configurationBuilder.addClassLoaders(loaders);
for (String hookPrefix : hookPrefixes) {
configurationBuilder.forPackage(hookPrefix, loaders);
diff --git a/src/main/java/org/jenkins/tools/test/util/ExecutedTestNamesDetails.java b/src/main/java/org/jenkins/tools/test/util/ExecutedTestNamesDetails.java
index b8a8eb2c3..8c1dd2628 100644
--- a/src/main/java/org/jenkins/tools/test/util/ExecutedTestNamesDetails.java
+++ b/src/main/java/org/jenkins/tools/test/util/ExecutedTestNamesDetails.java
@@ -50,10 +50,7 @@ private Set get(String key) {
}
private void add(String key, String test) {
- if (this.tests.get(key) == null) {
- this.tests.put(key, new TreeSet());
- }
- this.tests.get(key).add(test);
+ this.tests.computeIfAbsent(key, unused -> new TreeSet<>()).add(test);
}
public boolean hasBeenExecuted() {
diff --git a/src/main/java/org/jenkins/tools/test/util/StreamGobbler.java b/src/main/java/org/jenkins/tools/test/util/StreamGobbler.java
new file mode 100644
index 000000000..34df06b49
--- /dev/null
+++ b/src/main/java/org/jenkins/tools/test/util/StreamGobbler.java
@@ -0,0 +1,38 @@
+package org.jenkins.tools.test.util;
+
+import edu.umd.cs.findbugs.annotations.NonNull;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.UncheckedIOException;
+import java.nio.charset.Charset;
+
+public class StreamGobbler extends Thread {
+
+ @NonNull private final InputStream is;
+
+ private final StringBuilder output = new StringBuilder();
+
+ public StreamGobbler(@NonNull InputStream is) {
+ this.is = is;
+ }
+
+ public String getOutput() {
+ return output.toString();
+ }
+
+ @Override
+ public void run() {
+ try (Reader r = new InputStreamReader(is, Charset.defaultCharset()); BufferedReader br = new BufferedReader(r)) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ output.append(line);
+ output.append(System.lineSeparator());
+ }
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+}
diff --git a/src/test/java/org/jenkins/tools/test/NonStandardTagHookTest.java b/src/test/java/org/jenkins/tools/test/NonStandardTagHookTest.java
index ceaf5e13d..a5ef03eee 100644
--- a/src/test/java/org/jenkins/tools/test/NonStandardTagHookTest.java
+++ b/src/test/java/org/jenkins/tools/test/NonStandardTagHookTest.java
@@ -84,7 +84,7 @@ public void testActuallyPerformsTheCheckoutWithVersionGreaterThanMinimum() {
PluginCompatTesterConfig config = new PluginCompatTesterConfig(testFolder.getRoot(),
new File("../reports/PluginCompatReport.xml"),
new ClassPathResource("m2-settings.xml").getFile());
- config.setIncludePlugins(Collections.singletonList("electricflow"));
+ config.setIncludePlugins(List.of("electricflow"));
config.setSkipTestCache(true);
config.setCacheThresholdStatus(TestStatus.TEST_FAILURES);
config.setTestCacheTimeout(345600000);
diff --git a/src/test/java/org/jenkins/tools/test/PluginCompatTesterTest.java b/src/test/java/org/jenkins/tools/test/PluginCompatTesterTest.java
index 52de03b27..b740e1b58 100644
--- a/src/test/java/org/jenkins/tools/test/PluginCompatTesterTest.java
+++ b/src/test/java/org/jenkins/tools/test/PluginCompatTesterTest.java
@@ -38,7 +38,6 @@
import java.io.IOException;
import java.nio.file.Paths;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -67,8 +66,6 @@
import org.jvnet.hudson.test.Issue;
import org.springframework.core.io.ClassPathResource;
-import com.google.common.collect.ImmutableList;
-
import hudson.util.VersionNumber;
/**
@@ -103,7 +100,7 @@ public void tearDown() {
@Ignore("TODO broken by https://github.com/jenkinsci/active-directory-plugin/releases/tag/active-directory-2.17; figure out how to pin a version")
@Test
public void testWithUrl() throws Throwable {
- PluginCompatTesterConfig config = getConfig(ImmutableList.of("active-directory"));
+ PluginCompatTesterConfig config = getConfig(List.of("active-directory"));
config.setStoreAll(true);
PluginCompatTester tester = new PluginCompatTester(config);
@@ -144,7 +141,7 @@ public void testWithUrl() throws Throwable {
@Ignore("TODO broken by https://github.com/jenkinsci/active-directory-plugin/releases/tag/active-directory-2.17; figure out how to pin a version")
@Test
public void testWithIsolatedTest() throws Throwable {
- PluginCompatTesterConfig config = getConfig(ImmutableList.of("active-directory"));
+ PluginCompatTesterConfig config = getConfig(List.of("active-directory"));
config.setStoreAll(true);
Map mavenProperties = new HashMap<>();
mavenProperties.put("test","ActiveDirectoryAuthenticationProviderTest#testEscape");
@@ -170,7 +167,7 @@ public void testWithIsolatedTest() throws Throwable {
@Test
public void testStoreOnlyFailedTests() throws Throwable {
- PluginCompatTesterConfig config = getConfig(ImmutableList.of("analysis-collector"));
+ PluginCompatTesterConfig config = getConfig(List.of("analysis-collector"));
config.setStoreAll(false);
PluginCompatTester tester = new PluginCompatTester(config);
@@ -192,7 +189,7 @@ public void testStoreOnlyFailedTests() throws Throwable {
@Test
public void testBom() throws IOException, PlexusContainerException, PomExecutionException, XmlPullParserException {
- PluginCompatTesterConfig config = getConfig(ImmutableList.of("workflow-api", // From BOM
+ PluginCompatTesterConfig config = getConfig(List.of("workflow-api", // From BOM
"accurev" // From Update Center
));
@@ -205,11 +202,11 @@ public void testBom() throws IOException, PlexusContainerException, PomExecution
@Test
public void testWithCasCProperties() throws Throwable {
- PluginCompatTesterConfig config = getConfig(ImmutableList.of("ec2"));
+ PluginCompatTesterConfig config = getConfig(List.of("ec2"));
Map mavenProperties = new HashMap<>();
mavenProperties.put("test","ConfigurationAsCodeTest#testConfigAsCodeExport");
config.setMavenProperties(mavenProperties);
- List overridenPlugins = Arrays.asList(new PCTPlugin("configuration-as-code", "io.jenkins", new VersionNumber("1.38")));
+ List overridenPlugins = List.of(new PCTPlugin("configuration-as-code", "io.jenkins", new VersionNumber("1.38")));
config.setOverridenPlugins(overridenPlugins);
PluginCompatTester tester = new PluginCompatTester(config);
@@ -219,7 +216,7 @@ public void testWithCasCProperties() throws Throwable {
@Test
public void testWithInvalidExclusionList() throws Throwable {
File exclusionList = new ClassPathResource("bad-surefire-exclusion-list").getFile();
- PluginCompatTesterConfig config = getConfig(ImmutableList.of("active-directory"));
+ PluginCompatTesterConfig config = getConfig(List.of("active-directory"));
Map mavenProperties = new HashMap<>();
mavenProperties.put("surefire.excludesFile", exclusionList.getAbsolutePath());
config.setMavenProperties(mavenProperties);
@@ -272,7 +269,7 @@ public void testWithoutAlternativeUrl() throws Throwable {
MavenCoordinates mavenCoordinates = new MavenCoordinates("org.jenkins-ci.plugins", "plugin", "3.54");
PluginCompatTesterConfig config = new PluginCompatTesterConfig(testFolder.getRoot(), new File(REPORT_FILE),
getSettingsFile());
- config.setIncludePlugins(ImmutableList.of(pluginName));
+ config.setIncludePlugins(List.of(pluginName));
PluginCompatTester pct = new PluginCompatTester(config);
PomData pomData = new PomData(pluginName, "hpi", nonWorkingConnectionURL, pluginName + "-" + version,
@@ -282,7 +279,7 @@ public void testWithoutAlternativeUrl() throws Throwable {
}
@Ignore("TODO broken by GH protocol changes. Requesting user data access via https on local execution")
- @Test(expected = Test.None.class)
+ @Test
public void testWithAlternativeUrl() throws Throwable {
String pluginName = "workflow-api";
String version = "2.39";
@@ -290,7 +287,7 @@ public void testWithAlternativeUrl() throws Throwable {
MavenCoordinates mavenCoordinates = new MavenCoordinates("org.jenkins-ci.plugins", "plugin", "3.54");
PluginCompatTesterConfig config = new PluginCompatTesterConfig(testFolder.getRoot(), new File(REPORT_FILE),
getSettingsFile());
- config.setIncludePlugins(ImmutableList.of(pluginName));
+ config.setIncludePlugins(List.of(pluginName));
config.setFallbackGitHubOrganization("jenkinsci");
PluginCompatTester pct = new PluginCompatTester(config);
diff --git a/src/test/java/org/jenkins/tools/test/ScmConnectionSpecialCasesTest.java b/src/test/java/org/jenkins/tools/test/ScmConnectionSpecialCasesTest.java
index bf1932a70..c0ba7df2f 100644
--- a/src/test/java/org/jenkins/tools/test/ScmConnectionSpecialCasesTest.java
+++ b/src/test/java/org/jenkins/tools/test/ScmConnectionSpecialCasesTest.java
@@ -27,7 +27,7 @@
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
import org.jenkins.tools.test.model.MavenCoordinates;
import org.jenkins.tools.test.model.PluginRemoting;
diff --git a/src/test/java/org/jenkins/tools/test/VersionComparatorTest.java b/src/test/java/org/jenkins/tools/test/VersionComparatorTest.java
index bfc092808..5dd92bd5b 100644
--- a/src/test/java/org/jenkins/tools/test/VersionComparatorTest.java
+++ b/src/test/java/org/jenkins/tools/test/VersionComparatorTest.java
@@ -27,9 +27,9 @@
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
-import com.google.common.collect.ImmutableMap;
+import java.util.Map;
import org.jenkins.tools.test.model.comparators.VersionComparator;
import org.junit.Test;
@@ -40,7 +40,7 @@
*/
public class VersionComparatorTest {
- private static final ImmutableMap OPERAND_CONVERSION = ImmutableMap.of(
+ private static final Map OPERAND_CONVERSION = Map.of(
"<", -1,
"=", 0,
">", 1
diff --git a/src/test/java/org/jenkins/tools/test/hook/JacocoHookTest.java b/src/test/java/org/jenkins/tools/test/hook/JacocoHookTest.java
index a10d856c2..f18620b28 100644
--- a/src/test/java/org/jenkins/tools/test/hook/JacocoHookTest.java
+++ b/src/test/java/org/jenkins/tools/test/hook/JacocoHookTest.java
@@ -1,10 +1,10 @@
package org.jenkins.tools.test.hook;
-import com.google.common.collect.Lists;
import org.jenkins.tools.test.model.MavenCoordinates;
import org.jenkins.tools.test.model.PomData;
import org.junit.Test;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -33,36 +33,36 @@ public void testCheckMethod() {
}
@Test
- public void testAction() throws Exception {
+ public void testAction() {
final JacocoHook hook = new JacocoHook();
Map info = new HashMap<>();
- info.put("args", Lists.newArrayList(
+ info.put("args", new ArrayList<>(List.of(
"--define=forkCount=1",
"hpi:resolve-test-dependencies",
"hpi:test-hpl",
- "surefire:test"));
+ "surefire:test")));
Map afterAction = hook.action(info);
List args = (List) afterAction.get("args");
assertThat(args.size(), is(5));
assertThat(args.get(1), is("jacoco:prepare-agent"));
info = new HashMap<>();
- info.put("args", Lists.newArrayList(
+ info.put("args", new ArrayList<>(List.of(
"--define=forkCount=1",
"other-plugin:other-goal",
- "surefire:test"));
+ "surefire:test")));
afterAction = hook.action(info);
args = (List) afterAction.get("args");
assertThat(args.size(), is(4));
assertThat(args.get(2), is("jacoco:prepare-agent"));
info = new HashMap<>();
- info.put("args", Lists.newArrayList(
+ info.put("args", new ArrayList<>(List.of(
"element1",
"element2",
"element3",
- "element4"));
+ "element4")));
afterAction = hook.action(info);
args = (List) afterAction.get("args");
assertThat(args.size(), is(4));
diff --git a/src/test/java/org/jenkins/tools/test/hook/WarningsNGExecutionHookTest.java b/src/test/java/org/jenkins/tools/test/hook/WarningsNGExecutionHookTest.java
index f54a7a0c1..cfd9be12c 100644
--- a/src/test/java/org/jenkins/tools/test/hook/WarningsNGExecutionHookTest.java
+++ b/src/test/java/org/jenkins/tools/test/hook/WarningsNGExecutionHookTest.java
@@ -1,10 +1,10 @@
package org.jenkins.tools.test.hook;
-import com.google.common.collect.Lists;
import org.jenkins.tools.test.model.MavenCoordinates;
import org.jenkins.tools.test.model.PomData;
import org.junit.Test;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -37,11 +37,11 @@ public void testAction() throws Exception {
final WarningsNGExecutionHook hook = new WarningsNGExecutionHook();
Map info = new HashMap<>();
- info.put("args", Lists.newArrayList(
+ info.put("args", new ArrayList<>(List.of(
"--define=forkCount=1",
"hpi:resolve-test-dependencies",
"hpi:test-hpl",
- "surefire:test"));
+ "surefire:test")));
Map afterAction = hook.action(info);
List args = (List) afterAction.get("args");
assertThat(args.size(), is(5));
@@ -53,7 +53,7 @@ public void testType() throws Exception {
final WarningsNGExecutionHook hook = new WarningsNGExecutionHook();
Map info = new HashMap<>();
- info.put("types", Lists.newArrayList("surefire"));
+ info.put("types", new ArrayList<>(List.of("surefire")));
Map afterAction = hook.action(info);
List types = (List) afterAction.get("types");
assertThat(types.size(), is(2));
diff --git a/src/test/java/org/jenkins/tools/test/model/MavenPomTest.java b/src/test/java/org/jenkins/tools/test/model/MavenPomTest.java
index f8ac2fb7d..3b2846f36 100644
--- a/src/test/java/org/jenkins/tools/test/model/MavenPomTest.java
+++ b/src/test/java/org/jenkins/tools/test/model/MavenPomTest.java
@@ -1,17 +1,18 @@
package org.jenkins.tools.test.model;
-import com.google.common.collect.ImmutableMap;
import hudson.util.VersionNumber;
import java.io.File;
import java.io.IOException;
-import java.nio.charset.Charset;
+import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -28,21 +29,21 @@ public void addDependenciesWithTestsClassifier() throws Exception {
File prj = tmp.newFolder();
File pom = createPomFileFromResource(prj, "credentials-binding-pom-before.xml");
- Map toAdd = new HashMap<>(Collections.singletonMap("trilead-api", new VersionNumber("1.0.8")));
- Map toReplace = new HashMap<>(ImmutableMap.of("credentials", new VersionNumber("2.3.12"), "ssh-credentials", new VersionNumber("1.18.1"), "plain-credentials", new VersionNumber("1.7")));
+ Map toAdd = new HashMap<>(Map.of("trilead-api", new VersionNumber("1.0.8")));
+ Map toReplace = new HashMap<>(Map.of("credentials", new VersionNumber("2.3.12"), "ssh-credentials", new VersionNumber("1.18.1"), "plain-credentials", new VersionNumber("1.7")));
Map toAddTest = new HashMap<>();
- Map toReplaceTest = new HashMap<>(ImmutableMap.of("workflow-scm-step", new VersionNumber("2.11"), "workflow-durable-task-step", new VersionNumber("2.35"), "display-url-api", new VersionNumber("2.3.3"), "script-security", new VersionNumber("1.74"), "workflow-cps", new VersionNumber("2.83")));
- toReplaceTest.putAll(ImmutableMap.of("workflow-support", new VersionNumber("3.5"), "workflow-job", new VersionNumber("2.39"), "workflow-basic-steps", new VersionNumber("2.20")));
- Map pluginGroupIds = new HashMap<>(ImmutableMap.of("credentials-binding", "org.jenkins-ci.plugins", "pipeline-build-step", "org.jenkins-ci.plugins", "credentials", "org.jenkins-ci.plugins", "jdk-tool", "org.jenkins-ci.plugins", "snakeyaml-api", "io.jenkins.plugins"));
- pluginGroupIds.putAll(ImmutableMap.of("workflow-step-api", "org.jenkins-ci.plugins.workflow", "plain-credentials", "org.jenkins-ci.plugins", "trilead-api", "org.jenkins-ci.plugins", "command-launcher", "org.jenkins-ci.plugins", "jquery", "org.jenkins-ci.plugins"));
- pluginGroupIds.putAll(ImmutableMap.of("matrix-project", "org.jenkins-ci.plugins", "jquery-detached", "org.jenkins-ci.ui", "ace-editor", "org.jenkins-ci.ui", "git", "org.jenkins-ci.plugins", "workflow-durable-task-step", "org.jenkins-ci.plugins.workflow"));
- pluginGroupIds.putAll(ImmutableMap.of("git-client", "org.jenkins-ci.plugins", "ssh-credentials", "org.jenkins-ci.plugins", "variant", "org.jenkins-ci.plugins", "cloudbees-folder", "org.jenkins-ci.plugins", "scm-api", "org.jenkins-ci.plugins"));
- pluginGroupIds.putAll(ImmutableMap.of("pipeline-stage-step", "org.jenkins-ci.plugins", "junit-attachments", "org.jenkins-ci.plugins", "durable-task", "org.jenkins-ci.plugins", "workflow-job", "org.jenkins-ci.plugins.workflow", "workflow-basic-steps", "org.jenkins-ci.plugins.workflow"));
- pluginGroupIds.putAll(ImmutableMap.of("jsch", "org.jenkins-ci.plugins", "timestamper", "org.jenkins-ci.plugins", "junit", "org.jenkins-ci.plugins", "apache-httpcomponents-client-4-api", "org.jenkins-ci.plugins", "structs", "org.jenkins-ci.plugins"));
- pluginGroupIds.putAll(ImmutableMap.of("workflow-cps-global-lib", "org.jenkins-ci.plugins.workflow", "configuration-as-code", "io.jenkins", "workflow-cps", "org.jenkins-ci.plugins.workflow", "workflow-support", "org.jenkins-ci.plugins.workflow", "ssh-slaves", "org.jenkins-ci.plugins"));
- pluginGroupIds.putAll(ImmutableMap.of("htmlpublisher", "org.jenkins-ci.plugins", "mailer", "org.jenkins-ci.plugins", "ansicolor", "org.jenkins-ci.plugins", "jackson2-api", "org.jenkins-ci.plugins", "workflow-scm-step", "org.jenkins-ci.plugins.workflow"));
- pluginGroupIds.putAll(ImmutableMap.of("display-url-api", "org.jenkins-ci.plugins", "token-macro", "org.jenkins-ci.plugins", "script-security", "org.jenkins-ci.plugins", "pipeline-input-step", "org.jenkins-ci.plugins", "branch-api", "org.jenkins-ci.plugins"));
- pluginGroupIds.putAll(ImmutableMap.of("workflow-api", "org.jenkins-ci.plugins.workflow", "git-server", "org.jenkins-ci.plugins"));
+ Map toReplaceTest = new HashMap<>(Map.of("workflow-scm-step", new VersionNumber("2.11"), "workflow-durable-task-step", new VersionNumber("2.35"), "display-url-api", new VersionNumber("2.3.3"), "script-security", new VersionNumber("1.74"), "workflow-cps", new VersionNumber("2.83")));
+ toReplaceTest.putAll(Map.of("workflow-support", new VersionNumber("3.5"), "workflow-job", new VersionNumber("2.39"), "workflow-basic-steps", new VersionNumber("2.20")));
+ Map pluginGroupIds = new HashMap<>(Map.of("credentials-binding", "org.jenkins-ci.plugins", "pipeline-build-step", "org.jenkins-ci.plugins", "credentials", "org.jenkins-ci.plugins", "jdk-tool", "org.jenkins-ci.plugins", "snakeyaml-api", "io.jenkins.plugins"));
+ pluginGroupIds.putAll(Map.of("workflow-step-api", "org.jenkins-ci.plugins.workflow", "plain-credentials", "org.jenkins-ci.plugins", "trilead-api", "org.jenkins-ci.plugins", "command-launcher", "org.jenkins-ci.plugins", "jquery", "org.jenkins-ci.plugins"));
+ pluginGroupIds.putAll(Map.of("matrix-project", "org.jenkins-ci.plugins", "jquery-detached", "org.jenkins-ci.ui", "ace-editor", "org.jenkins-ci.ui", "git", "org.jenkins-ci.plugins", "workflow-durable-task-step", "org.jenkins-ci.plugins.workflow"));
+ pluginGroupIds.putAll(Map.of("git-client", "org.jenkins-ci.plugins", "ssh-credentials", "org.jenkins-ci.plugins", "variant", "org.jenkins-ci.plugins", "cloudbees-folder", "org.jenkins-ci.plugins", "scm-api", "org.jenkins-ci.plugins"));
+ pluginGroupIds.putAll(Map.of("pipeline-stage-step", "org.jenkins-ci.plugins", "junit-attachments", "org.jenkins-ci.plugins", "durable-task", "org.jenkins-ci.plugins", "workflow-job", "org.jenkins-ci.plugins.workflow", "workflow-basic-steps", "org.jenkins-ci.plugins.workflow"));
+ pluginGroupIds.putAll(Map.of("jsch", "org.jenkins-ci.plugins", "timestamper", "org.jenkins-ci.plugins", "junit", "org.jenkins-ci.plugins", "apache-httpcomponents-client-4-api", "org.jenkins-ci.plugins", "structs", "org.jenkins-ci.plugins"));
+ pluginGroupIds.putAll(Map.of("workflow-cps-global-lib", "org.jenkins-ci.plugins.workflow", "configuration-as-code", "io.jenkins", "workflow-cps", "org.jenkins-ci.plugins.workflow", "workflow-support", "org.jenkins-ci.plugins.workflow", "ssh-slaves", "org.jenkins-ci.plugins"));
+ pluginGroupIds.putAll(Map.of("htmlpublisher", "org.jenkins-ci.plugins", "mailer", "org.jenkins-ci.plugins", "ansicolor", "org.jenkins-ci.plugins", "jackson2-api", "org.jenkins-ci.plugins", "workflow-scm-step", "org.jenkins-ci.plugins.workflow"));
+ pluginGroupIds.putAll(Map.of("display-url-api", "org.jenkins-ci.plugins", "token-macro", "org.jenkins-ci.plugins", "script-security", "org.jenkins-ci.plugins", "pipeline-input-step", "org.jenkins-ci.plugins", "branch-api", "org.jenkins-ci.plugins"));
+ pluginGroupIds.putAll(Map.of("workflow-api", "org.jenkins-ci.plugins.workflow", "git-server", "org.jenkins-ci.plugins"));
List toConvert = Collections.emptyList();
new MavenPom(prj).addDependencies(toAdd, toReplace, toAddTest, toReplaceTest, pluginGroupIds, toConvert);
@@ -82,11 +83,10 @@ public void doNotDuplicateDependenciesWhoseVersionsAreProperties() throws Except
assertResourceEqualsXmlFile("demo-plugin-properties-pom-after.xml", pomFile);
}
- private void assertResourceEqualsXmlFile(String resource, File pom) throws IOException {
- Charset charset = Charset.forName("UTF-8");
+ private void assertResourceEqualsXmlFile(String resource, File pom) throws IOException, URISyntaxException {
assertEquals(
- normalizeXmlString(IOUtils.toString(MavenPomTest.class.getResource(resource), charset)),
- normalizeXmlString(FileUtils.readFileToString(pom, charset))
+ normalizeXmlString(Files.readString(Paths.get(getClass().getResource(resource).toURI()), StandardCharsets.UTF_8)),
+ normalizeXmlString(FileUtils.readFileToString(pom, StandardCharsets.UTF_8))
);
}