Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Maven model directly #472

Merged
merged 1 commit into from
Mar 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 33 additions & 29 deletions src/main/java/org/jenkins/tools/test/PluginCompatTester.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,16 +51,16 @@
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.exception.PluginCompatibilityTesterException;
import org.jenkins.tools.test.exception.PluginSourcesUnavailableException;
import org.jenkins.tools.test.exception.PomExecutionException;
import org.jenkins.tools.test.maven.ExternalMavenRunner;
import org.jenkins.tools.test.maven.MavenRunner;
import org.jenkins.tools.test.model.MavenCoordinates;
import org.jenkins.tools.test.model.MavenPom;
import org.jenkins.tools.test.model.PluginCompatTesterConfig;
import org.jenkins.tools.test.model.PluginRemoting;
import org.jenkins.tools.test.model.PomData;
import org.jenkins.tools.test.model.hook.BeforeCheckoutContext;
import org.jenkins.tools.test.model.hook.BeforeCompilationContext;
import org.jenkins.tools.test.model.hook.BeforeExecutionContext;
Expand Down Expand Up @@ -137,8 +137,11 @@ && localCheckoutProvided()
data.plugins.put(artifactId, extracted);
}

MavenCoordinates coreCoordinates =
new MavenCoordinates("org.jenkins-ci.main", "jenkins-war", data.core.version);
Dependency coreCoordinates = new Dependency();
coreCoordinates.setGroupId("org.jenkins-ci.main");
coreCoordinates.setArtifactId("jenkins-war");
coreCoordinates.setVersion(data.core.version);
coreCoordinates.setType("executable-war");

PluginCompatibilityTesterException lastException = null;
LOGGER.log(Level.INFO, "Starting plugin tests on core coordinates {0}", coreCoordinates);
Expand Down Expand Up @@ -177,8 +180,8 @@ && localCheckoutProvided()
}

try {
PomData pomData = remote.retrievePomData();
testPluginAgainst(coreCoordinates, plugin, pomData, pcth);
Model model = remote.retrieveModel();
testPluginAgainst(coreCoordinates, plugin, model, pcth);
} catch (PluginCompatibilityTesterException e) {
if (lastException != null) {
e.addSuppressed(lastException);
Expand All @@ -191,7 +194,7 @@ && localCheckoutProvided()
Level.SEVERE,
String.format(
"Internal error while executing a test for core %s and plugin %s at version %s.",
coreCoordinates.version,
coreCoordinates.getVersion(),
plugin.getDisplayName(),
plugin.version),
e);
Expand All @@ -205,39 +208,39 @@ && localCheckoutProvided()
}

private UpdateSite.Plugin extractFromLocalCheckout() throws PluginSourcesUnavailableException {
PomData data =
Model model =
new PluginRemoting(new File(config.getLocalCheckoutDir(), "pom.xml"))
.retrievePomData();
.retrieveModel();
return new UpdateSite.Plugin(
data.artifactId, "" /* version is not required */, data.getConnectionUrl(), null);
model.getArtifactId(),
"" /* version is not required */,
model.getScm().getConnection(),
null);
}

private static File createBuildLogFile(
File workDirectory,
String pluginName,
String pluginVersion,
MavenCoordinates coreCoords) {
File workDirectory, String pluginName, String pluginVersion, Dependency coreCoords) {
return new File(
workDirectory.getAbsolutePath()
+ File.separator
+ createBuildLogFilePathFor(pluginName, pluginVersion, coreCoords));
}

private static String createBuildLogFilePathFor(
String pluginName, String pluginVersion, MavenCoordinates coreCoords) {
String pluginName, String pluginVersion, Dependency coreCoords) {
return String.format(
"logs/%s/v%s_against_%s_%s_%s.log",
pluginName,
pluginVersion,
coreCoords.groupId,
coreCoords.artifactId,
coreCoords.version);
coreCoords.getGroupId(),
coreCoords.getArtifactId(),
coreCoords.getVersion());
}

private void testPluginAgainst(
MavenCoordinates coreCoordinates,
Dependency coreCoordinates,
UpdateSite.Plugin plugin,
PomData pomData,
Model model,
PluginCompatTesterHooks pcth)
throws PluginCompatibilityTesterException {
LOGGER.log(
Expand All @@ -262,7 +265,7 @@ private void testPluginAgainst(

// Run any precheckout hooks
BeforeCheckoutContext beforeCheckout =
new BeforeCheckoutContext(plugin, pomData, coreCoordinates, config);
new BeforeCheckoutContext(plugin, model, coreCoordinates, config);
pcth.runBeforeCheckout(beforeCheckout);

if (!beforeCheckout.ranCheckout()) {
Expand Down Expand Up @@ -306,9 +309,9 @@ private void testPluginAgainst(
}
} else {
cloneFromScm(
pomData.getConnectionUrl(),
model.getScm().getConnection(),
config.getFallbackGitHubOrganization(),
pomData.getScmTag(),
model.getScm().getTag(),
pluginCheckoutDir);
}
} else {
Expand Down Expand Up @@ -337,9 +340,9 @@ private void testPluginAgainst(
// These hooks could redirect the SCM, skip checkout (if multiple plugins use
// the same preloaded repo)
cloneFromScm(
pomData.getConnectionUrl(),
model.getScm().getConnection(),
config.getFallbackGitHubOrganization(),
pomData.getScmTag(),
model.getScm().getTag(),
pluginCheckoutDir);
}
} else {
Expand Down Expand Up @@ -369,7 +372,7 @@ private void testPluginAgainst(
// Ran the BeforeCompileHooks
BeforeCompilationContext beforeCompile =
new BeforeCompilationContext(
plugin, pomData, coreCoordinates, config, pluginCheckoutDir, parentFolder);
plugin, model, coreCoordinates, config, pluginCheckoutDir, parentFolder);
pcth.runBeforeCompilation(beforeCompile);

// First build against the original POM. This defends against source incompatibilities
Expand All @@ -394,7 +397,7 @@ private void testPluginAgainst(
BeforeExecutionContext forExecutionHooks =
new BeforeExecutionContext(
plugin,
pomData,
model,
coreCoordinates,
config,
pluginCheckoutDir,
Expand All @@ -405,9 +408,10 @@ private void testPluginAgainst(

Map<String, String> properties = new LinkedHashMap<>(config.getMavenProperties());
properties.put("overrideWar", config.getWar().toString());
properties.put("jenkins.version", coreCoordinates.version);
properties.put("jenkins.version", coreCoordinates.getVersion());
properties.put("useUpperBounds", "true");
if (new VersionNumber(coreCoordinates.version).isOlderThan(new VersionNumber("2.382"))) {
if (new VersionNumber(coreCoordinates.getVersion())
.isOlderThan(new VersionNumber("2.382"))) {
/*
* Versions of Jenkins prior to 2.382 are susceptible to JENKINS-68696, in which
* javax.servlet:servlet-api comes from core at version 0. This is an intentional trick
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.PluginCompatTester;
import org.jenkins.tools.test.exception.PluginSourcesUnavailableException;
import org.jenkins.tools.test.model.PomData;
import org.jenkins.tools.test.model.hook.BeforeCheckoutContext;
import org.jenkins.tools.test.model.hook.PluginCompatTesterHookBeforeCheckout;

Expand Down Expand Up @@ -42,12 +42,12 @@ public void action(@NonNull BeforeCheckoutContext context)
+ "/"
+ getParentFolder());

PomData pomData = context.getPomData();
Model model = context.getModel();
// Like the call in PluginCompatTester#runHooks but with subdirectories trimmed:
PluginCompatTester.cloneFromScm(
pomData.getConnectionUrl(),
model.getScm().getConnection(),
context.getConfig().getFallbackGitHubOrganization(),
pomData.getScmTag(),
model.getScm().getTag(),
parentPath);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.Set;
import org.jenkins.tools.test.model.PomData;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.hook.BeforeExecutionContext;

/**
Expand All @@ -25,9 +25,9 @@ public class AnalysisPomExecutionHook extends PluginWithFailsafeIntegrationTests

@Override
public boolean check(@NonNull BeforeExecutionContext context) {
PomData data = context.getPomData();
return "io.jenkins.plugins".equals(data.groupId)
&& ARTIFACT_IDS.contains(data.artifactId)
&& "hpi".equals(data.getPackaging());
Model model = context.getModel();
return "io.jenkins.plugins".equals(model.getGroupId())
&& ARTIFACT_IDS.contains(model.getArtifactId())
&& "hpi".equals(model.getPackaging());
}
}
16 changes: 8 additions & 8 deletions src/main/java/org/jenkins/tools/test/hook/AwsJavaSdkHook.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.jenkins.tools.test.hook;

import edu.umd.cs.findbugs.annotations.NonNull;
import org.jenkins.tools.test.model.PomData;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.hook.BeforeCheckoutContext;

public class AwsJavaSdkHook extends AbstractMultiParentHook {
Expand All @@ -13,12 +13,12 @@ protected String getParentFolder() {

@Override
public boolean check(@NonNull BeforeCheckoutContext context) {
PomData data = context.getPomData();
return ("org.jenkins-ci.plugins".equals(data.groupId)
&& "aws-java-sdk".equals(data.artifactId)
&& "hpi".equals(data.getPackaging()))
|| ("org.jenkins-ci.plugins.aws-java-sdk".equals(data.groupId)
&& data.artifactId.startsWith("aws-java-sdk")
&& "hpi".equals(data.getPackaging()));
Model model = context.getModel();
return ("org.jenkins-ci.plugins".equals(model.getGroupId())
&& "aws-java-sdk".equals(model.getArtifactId())
&& "hpi".equals(model.getPackaging()))
|| ("org.jenkins-ci.plugins.aws-java-sdk".equals(model.getGroupId())
&& model.getArtifactId().startsWith("aws-java-sdk")
&& "hpi".equals(model.getPackaging()));
}
}
12 changes: 6 additions & 6 deletions src/main/java/org/jenkins/tools/test/hook/BlueOceanHook.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.jenkins.tools.test.hook;

import edu.umd.cs.findbugs.annotations.NonNull;
import org.jenkins.tools.test.model.PomData;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.hook.BeforeCheckoutContext;

/** Workaround for the Blue Ocean plugins since they are stored in a central repository. */
Expand All @@ -14,10 +14,10 @@ protected String getParentFolder() {

@Override
public boolean check(@NonNull BeforeCheckoutContext context) {
PomData data = context.getPomData();
return "io.jenkins.blueocean".equals(data.groupId)
&& (data.artifactId.startsWith("blueocean")
|| "jenkins-design-language".equals(data.artifactId))
&& "hpi".equals(data.getPackaging());
Model model = context.getModel();
return "io.jenkins.blueocean".equals(model.getGroupId())
&& (model.getArtifactId().startsWith("blueocean")
|| "jenkins-design-language".equals(model.getArtifactId()))
&& "hpi".equals(model.getPackaging());
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.jenkins.tools.test.hook;

import edu.umd.cs.findbugs.annotations.NonNull;
import org.jenkins.tools.test.model.PomData;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.hook.BeforeCheckoutContext;

public class ConfigurationAsCodeHook extends AbstractMultiParentHook {
Expand All @@ -13,10 +13,10 @@ protected String getParentFolder() {

@Override
public boolean check(@NonNull BeforeCheckoutContext context) {
PomData data = context.getPomData();
return "io.jenkins".equals(data.groupId)
&& "configuration-as-code".equals(data.artifactId)
&& "hpi".equals(data.getPackaging());
Model model = context.getModel();
return "io.jenkins".equals(model.getGroupId())
&& "configuration-as-code".equals(model.getArtifactId())
&& "hpi".equals(model.getPackaging());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.Set;
import org.jenkins.tools.test.model.PomData;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.hook.BeforeCheckoutContext;

/**
Expand All @@ -24,9 +24,9 @@ protected String getParentFolder() {

@Override
public boolean check(@NonNull BeforeCheckoutContext context) {
PomData data = context.getPomData();
return "org.jenkinsci.plugins".equals(data.groupId)
&& ARTIFACT_IDS.contains(data.artifactId)
&& "hpi".equals(data.getPackaging());
Model model = context.getModel();
return "org.jenkinsci.plugins".equals(model.getGroupId())
&& ARTIFACT_IDS.contains(model.getArtifactId())
&& "hpi".equals(model.getPackaging());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.Set;
import org.jenkins.tools.test.model.PomData;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.hook.BeforeCheckoutContext;

/**
Expand All @@ -23,9 +23,9 @@ protected String getParentFolder() {

@Override
public boolean check(@NonNull BeforeCheckoutContext context) {
PomData data = context.getPomData();
return "org.jenkins-ci.plugins.to-declarative".equals(data.groupId)
&& ARTIFACT_IDS.contains(data.artifactId)
&& "hpi".equals(data.getPackaging());
Model model = context.getModel();
return "org.jenkins-ci.plugins.to-declarative".equals(model.getGroupId())
&& ARTIFACT_IDS.contains(model.getArtifactId())
&& "hpi".equals(model.getPackaging());
}
}
6 changes: 3 additions & 3 deletions src/main/java/org/jenkins/tools/test/hook/JacocoHook.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.List;
import java.util.stream.IntStream;
import org.jenkins.tools.test.model.PomData;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.hook.BeforeExecutionContext;
import org.jenkins.tools.test.model.hook.PluginCompatTesterHookBeforeExecution;

Expand All @@ -15,8 +15,8 @@ public class JacocoHook extends PluginCompatTesterHookBeforeExecution {

@Override
public boolean check(@NonNull BeforeExecutionContext context) {
PomData data = context.getPomData();
return "jacoco".equals(data.artifactId);
Model model = context.getModel();
return "jacoco".equals(model.getArtifactId());
}

@Override
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/org/jenkins/tools/test/hook/MinaSshdApi.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.jenkins.tools.test.hook;

import edu.umd.cs.findbugs.annotations.NonNull;
import org.jenkins.tools.test.model.PomData;
import org.apache.maven.model.Model;
import org.jenkins.tools.test.model.hook.BeforeCheckoutContext;

public class MinaSshdApi extends AbstractMultiParentHook {
Expand All @@ -13,9 +13,9 @@ protected String getParentFolder() {

@Override
public boolean check(@NonNull BeforeCheckoutContext context) {
PomData data = context.getPomData();
return "io.jenkins.plugins.mina-sshd-api".equals(data.groupId)
&& data.artifactId.startsWith("mina-sshd-api")
&& "hpi".equals(data.getPackaging());
Model model = context.getModel();
return "io.jenkins.plugins.mina-sshd-api".equals(model.getGroupId())
&& model.getArtifactId().startsWith("mina-sshd-api")
&& "hpi".equals(model.getPackaging());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public boolean check(@NonNull BeforeCompilationContext context) {
&& checkoutHook.check(
new BeforeCheckoutContext(
context.getPlugin(),
context.getPomData(),
context.getModel(),
context.getCoreCoordinates(),
context.getConfig()))) {
return true;
Expand Down
Loading