diff --git a/pom.xml b/pom.xml
index 58b2ea33..74154611 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
false
false
- 2.504
+ 2.541
${jenkins.baseline}.3
@@ -38,7 +38,7 @@
io.jenkins.tools.bom
bom-${jenkins.baseline}.x
- 5983.v443959746f1f
+ 6509.v993a_c958a_e35
pom
import
diff --git a/src/main/java/org/jenkinsci/plugins/scriptler/ScriptlerManagement.java b/src/main/java/org/jenkinsci/plugins/scriptler/ScriptlerManagement.java
index ef5cb9a6..e58280b1 100644
--- a/src/main/java/org/jenkinsci/plugins/scriptler/ScriptlerManagement.java
+++ b/src/main/java/org/jenkinsci/plugins/scriptler/ScriptlerManagement.java
@@ -200,7 +200,7 @@ public HttpResponse doDownloadScript(
}
for (ScriptInfoCatalog scriptInfoCatalog : getCatalogs()) {
- if (catalogName.equals(scriptInfoCatalog.getInfo().name)) {
+ if (catalogName.equals(scriptInfoCatalog.getInfo().name())) {
final ScriptInfo info = scriptInfoCatalog.getEntryById(id);
final String source = scriptInfoCatalog.getScriptSource(scriptInfoCatalog.getEntryById(id));
final List paramList = new ArrayList<>();
@@ -784,7 +784,7 @@ public ScriptInfoCatalog getCatalogByName(String catalogName) {
if (catalogName != null && !catalogName.isBlank()) {
for (ScriptInfoCatalog sic : getCatalogs()) {
final CatalogInfo info = sic.getInfo();
- if (catalogName.equals(info.name)) {
+ if (catalogName.equals(info.name())) {
return sic;
}
}
@@ -796,7 +796,7 @@ public CatalogInfo getCatalogInfoByName(String catalogName) {
if (catalogName != null && !catalogName.isBlank()) {
for (ScriptInfoCatalog sic : getCatalogs()) {
final CatalogInfo info = sic.getInfo();
- if (catalogName.equals(info.name)) {
+ if (catalogName.equals(info.name())) {
return info;
}
}
diff --git a/src/main/java/org/jenkinsci/plugins/scriptler/share/CatalogInfo.java b/src/main/java/org/jenkinsci/plugins/scriptler/share/CatalogInfo.java
index 9645ac0d..45e5536b 100644
--- a/src/main/java/org/jenkinsci/plugins/scriptler/share/CatalogInfo.java
+++ b/src/main/java/org/jenkinsci/plugins/scriptler/share/CatalogInfo.java
@@ -3,40 +3,20 @@
import edu.umd.cs.findbugs.annotations.NonNull;
import java.text.MessageFormat;
-public class CatalogInfo {
-
- @NonNull
- public final String name;
-
- @NonNull
- public final String catalogLocation;
-
- @NonNull
- public final String scriptDownloadUrl;
-
- @NonNull
- public final String scriptDetailUrl;
+public record CatalogInfo(
+ @NonNull String name,
+ @NonNull String catalogLocation,
+ @NonNull String scriptDetailUrl,
+ @NonNull String scriptDownloadUrl) {
/**
* Holds the informations used to connect to a catalog location
*
- * @param name
- * symbolic name of the catalog, must be unique.
- * @param catLocation
- * where to download the catalog file from (including file name, e.g. http://myserver.com/scriptler/my-scriptler-catalog.xml )
- * @param scriptDownloadUrl
- * the url to download a script by its name. Use {0} to mark the position for the file name in the url (e.g. http://myserver.com/scriptler/{0})
+ * @param name symbolic name of the catalog, must be unique.
+ * @param catalogLocation where to download the catalog file from (including file name, e.g. http://myserver.com/scriptler/my-scriptler-catalog.xml )
+ * @param scriptDownloadUrl the url to download a script by its name. Use {0} to mark the position for the file name in the url (e.g. http://myserver.com/scriptler/{0})
*/
- public CatalogInfo(
- @NonNull String name,
- @NonNull String catLocation,
- @NonNull String scriptDetailUrl,
- @NonNull String scriptDownloadUrl) {
- this.name = name;
- this.catalogLocation = catLocation;
- this.scriptDownloadUrl = scriptDownloadUrl;
- this.scriptDetailUrl = scriptDetailUrl;
- }
+ public CatalogInfo {}
public String getReplacedDownloadUrl(String scriptName, String id) {
if (scriptDownloadUrl.isEmpty()) {
diff --git a/src/test/java/org/jenkinsci/plugins/scriptler/builder/ScriptlerBuilderWithRestartTest.java b/src/test/java/org/jenkinsci/plugins/scriptler/builder/ScriptlerBuilderWithRestartTest.java
index 237dc52a..8f526229 100644
--- a/src/test/java/org/jenkinsci/plugins/scriptler/builder/ScriptlerBuilderWithRestartTest.java
+++ b/src/test/java/org/jenkinsci/plugins/scriptler/builder/ScriptlerBuilderWithRestartTest.java
@@ -35,6 +35,7 @@
import java.util.Objects;
import net.sf.json.JSONObject;
import org.htmlunit.HttpMethod;
+import org.htmlunit.WebClient;
import org.htmlunit.WebRequest;
import org.htmlunit.html.HtmlPage;
import org.htmlunit.util.NameValuePair;
@@ -42,14 +43,14 @@
import org.jenkinsci.plugins.scriptler.ScriptlerManagementHelper;
import org.jenkinsci.plugins.scriptler.config.Parameter;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.jvnet.hudson.test.JenkinsRule;
-import org.jvnet.hudson.test.junit.jupiter.WithJenkins;
+import org.jvnet.hudson.test.junit.jupiter.JenkinsSessionExtension;
/**
* Warning: a user without RUN_SCRIPT can currently only clone an existing builder INSIDE a project.
* You can search CLONE_NOTE inside this test to see the cases
*/
-@WithJenkins
class ScriptlerBuilderWithRestartTest {
private static final String SCRIPT_CONTENTS = "print 'Hello World!'";
private static final String SCRIPT_USABLE_1 = "script_usable_1.groovy";
@@ -59,50 +60,69 @@ class ScriptlerBuilderWithRestartTest {
private static final String SCRIPT_NOT_USABLE = "not_usable.groovy";
+ @RegisterExtension
+ public JenkinsSessionExtension jenkins = new JenkinsSessionExtension();
+
@Test
- void configRoundTrip(JenkinsRule r) throws Throwable {
- r.jenkins.setCrumbIssuer(null);
-
- ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_1, SCRIPT_CONTENTS, true);
- ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_2, SCRIPT_CONTENTS, true);
- ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_3, SCRIPT_CONTENTS, true);
- ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_4, SCRIPT_CONTENTS, true);
- ScriptlerManagementHelper.saveScript(SCRIPT_NOT_USABLE, SCRIPT_CONTENTS, false);
-
- FreeStyleProject project = r.createFreeStyleProject("test");
-
- try (JenkinsRule.WebClient wc = r.createWebClient()) {
-
- WebRequest request =
- new WebRequest(new URL(r.getURL() + project.getShortUrl() + "configSubmit"), HttpMethod.POST);
-
- final String projectName = project.getName();
- request.setRequestParameters(List.of(new NameValuePair(
- "json",
- JSONObject.fromObject(Map.of(
- "name",
- projectName,
- "builder",
- Map.of(
- "kind",
- ScriptlerBuilder.class.getName(),
- "builderId",
- "",
- "scriptlerScriptId",
- SCRIPT_USABLE_1,
- "propagateParams",
- true,
- "defineParams",
- Map.of(
- "parameters",
- List.of(
- Map.of("name", "param1", "value", "value1"),
- Map.of("name", "param2", "value", "value2"))))))
- .toString())));
- HtmlPage page = wc.getPage(request);
- r.assertGoodStatus(page);
-
- ScriptlerBuilder scriptlerBuilder = project.getBuildersList().get(ScriptlerBuilder.class);
+ void configRoundTrip() throws Throwable {
+ jenkins.then(r -> {
+ r.jenkins.setCrumbIssuer(null);
+
+ ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_1, SCRIPT_CONTENTS, true);
+ ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_2, SCRIPT_CONTENTS, true);
+ ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_3, SCRIPT_CONTENTS, true);
+ ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_4, SCRIPT_CONTENTS, true);
+ ScriptlerManagementHelper.saveScript(SCRIPT_NOT_USABLE, SCRIPT_CONTENTS, false);
+
+ FreeStyleProject project = r.createFreeStyleProject("test");
+
+ try (WebClient wc = r.createWebClient()) {
+
+ WebRequest request =
+ new WebRequest(new URL(r.getURL() + project.getShortUrl() + "configSubmit"), HttpMethod.POST);
+
+ final String projectName = project.getName();
+ request.setRequestParameters(List.of(new NameValuePair(
+ "json",
+ JSONObject.fromObject(Map.of(
+ "name",
+ projectName,
+ "builder",
+ Map.of(
+ "kind",
+ ScriptlerBuilder.class.getName(),
+ "builderId",
+ "",
+ "scriptlerScriptId",
+ SCRIPT_USABLE_1,
+ "propagateParams",
+ true,
+ "defineParams",
+ Map.of(
+ "parameters",
+ List.of(
+ Map.of("name", "param1", "value", "value1"),
+ Map.of("name", "param2", "value", "value2"))))))
+ .toString())));
+ HtmlPage page = wc.getPage(request);
+ r.assertGoodStatus(page);
+
+ ScriptlerBuilder scriptlerBuilder = project.getBuildersList().get(ScriptlerBuilder.class);
+ assertNotNull(scriptlerBuilder);
+ assertNotNull(scriptlerBuilder.getBuilderId());
+ assertEquals(SCRIPT_USABLE_1, scriptlerBuilder.getScriptId());
+ assertTrue(scriptlerBuilder.isPropagateParams());
+ assertIterableEquals(
+ List.of(new Parameter("param1", "value1"), new Parameter("param2", "value2")),
+ scriptlerBuilder.getParametersList());
+ }
+ });
+
+ jenkins.then(r -> {
+ FreeStyleProject p = r.jenkins.getItemByFullName("test", FreeStyleProject.class);
+
+ ScriptlerBuilder scriptlerBuilder =
+ Objects.requireNonNull(p).getBuildersList().get(ScriptlerBuilder.class);
assertNotNull(scriptlerBuilder);
assertNotNull(scriptlerBuilder.getBuilderId());
assertEquals(SCRIPT_USABLE_1, scriptlerBuilder.getScriptId());
@@ -110,90 +130,78 @@ void configRoundTrip(JenkinsRule r) throws Throwable {
assertIterableEquals(
List.of(new Parameter("param1", "value1"), new Parameter("param2", "value2")),
scriptlerBuilder.getParametersList());
- }
-
- r.restart();
-
- FreeStyleProject p = r.jenkins.getItemByFullName("test", FreeStyleProject.class);
-
- ScriptlerBuilder scriptlerBuilder =
- Objects.requireNonNull(p).getBuildersList().get(ScriptlerBuilder.class);
- assertNotNull(scriptlerBuilder);
- assertNotNull(scriptlerBuilder.getBuilderId());
- assertEquals(SCRIPT_USABLE_1, scriptlerBuilder.getScriptId());
- assertTrue(scriptlerBuilder.isPropagateParams());
- assertIterableEquals(
- List.of(new Parameter("param1", "value1"), new Parameter("param2", "value2")),
- scriptlerBuilder.getParametersList());
+ });
}
@Test
- void configRoundTripConfigXml(JenkinsRule r) throws Throwable {
- r.jenkins.setCrumbIssuer(null);
-
- ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_1, SCRIPT_CONTENTS, true);
- ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_2, SCRIPT_CONTENTS, true);
- ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_3, SCRIPT_CONTENTS, true);
- ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_4, SCRIPT_CONTENTS, true);
- ScriptlerManagementHelper.saveScript(SCRIPT_NOT_USABLE, SCRIPT_CONTENTS, false);
-
- FreeStyleProject project = r.createFreeStyleProject("test");
-
- try (JenkinsRule.WebClient wc = r.createWebClient()) {
-
- XmlPage xmlPage = wc.goToXml(project.getShortUrl() + "config.xml");
- r.assertGoodStatus(xmlPage);
- String xml = xmlPage.getWebResponse().getContentAsString();
-
- String modifiedXml = xml.replace("", String.format("""
-
-
-
- %1s
- true
-
-
- param1
- value1
-
-
- param2
- value2
-
-
-
- """, SCRIPT_USABLE_1));
-
- WebRequest request = new WebRequest(new URL(project.getAbsoluteUrl() + "config.xml"), HttpMethod.POST);
- request.setRequestBody(modifiedXml);
- request.setEncodingType(null);
- HtmlPage page = wc.getPage(request);
- r.assertGoodStatus(page);
-
- project = r.jenkins.getItemByFullName(project.getFullName(), FreeStyleProject.class);
+ void configRoundTripConfigXml() throws Throwable {
+ jenkins.then(r -> {
+ r.jenkins.setCrumbIssuer(null);
+
+ ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_1, SCRIPT_CONTENTS, true);
+ ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_2, SCRIPT_CONTENTS, true);
+ ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_3, SCRIPT_CONTENTS, true);
+ ScriptlerManagementHelper.saveScript(SCRIPT_USABLE_4, SCRIPT_CONTENTS, true);
+ ScriptlerManagementHelper.saveScript(SCRIPT_NOT_USABLE, SCRIPT_CONTENTS, false);
+
+ FreeStyleProject project = r.createFreeStyleProject("test");
+
+ try (JenkinsRule.WebClient wc = r.createWebClient()) {
+
+ XmlPage xmlPage = wc.goToXml(project.getShortUrl() + "config.xml");
+ r.assertGoodStatus(xmlPage);
+ String xml = xmlPage.getWebResponse().getContentAsString();
+
+ String modifiedXml = xml.replace("", String.format("""
+
+
+
+ %1s
+ true
+
+
+ param1
+ value1
+
+
+ param2
+ value2
+
+
+
+ """, SCRIPT_USABLE_1));
+
+ WebRequest request = new WebRequest(new URL(project.getAbsoluteUrl() + "config.xml"), HttpMethod.POST);
+ request.setRequestBody(modifiedXml);
+ request.setEncodingType(null);
+ HtmlPage page = wc.getPage(request);
+ r.assertGoodStatus(page);
+
+ project = r.jenkins.getItemByFullName(project.getFullName(), FreeStyleProject.class);
+ ScriptlerBuilder scriptlerBuilder =
+ Objects.requireNonNull(project).getBuildersList().get(ScriptlerBuilder.class);
+ assertNotNull(scriptlerBuilder);
+ assertEquals("", scriptlerBuilder.getBuilderId());
+ assertEquals(SCRIPT_USABLE_1, scriptlerBuilder.getScriptId());
+ assertTrue(scriptlerBuilder.isPropagateParams());
+ assertIterableEquals(
+ List.of(new Parameter("param1", "value1"), new Parameter("param2", "value2")),
+ scriptlerBuilder.getParametersList());
+ }
+ });
+
+ jenkins.then(r -> {
+ FreeStyleProject p = r.jenkins.getItemByFullName("test", FreeStyleProject.class);
+
ScriptlerBuilder scriptlerBuilder =
- Objects.requireNonNull(project).getBuildersList().get(ScriptlerBuilder.class);
+ Objects.requireNonNull(p).getBuildersList().get(ScriptlerBuilder.class);
assertNotNull(scriptlerBuilder);
- assertEquals("", scriptlerBuilder.getBuilderId());
+ assertNotNull(scriptlerBuilder.getBuilderId());
assertEquals(SCRIPT_USABLE_1, scriptlerBuilder.getScriptId());
assertTrue(scriptlerBuilder.isPropagateParams());
assertIterableEquals(
List.of(new Parameter("param1", "value1"), new Parameter("param2", "value2")),
scriptlerBuilder.getParametersList());
- }
-
- r.restart();
-
- FreeStyleProject p = r.jenkins.getItemByFullName("test", FreeStyleProject.class);
-
- ScriptlerBuilder scriptlerBuilder =
- Objects.requireNonNull(p).getBuildersList().get(ScriptlerBuilder.class);
- assertNotNull(scriptlerBuilder);
- assertNotNull(scriptlerBuilder.getBuilderId());
- assertEquals(SCRIPT_USABLE_1, scriptlerBuilder.getScriptId());
- assertTrue(scriptlerBuilder.isPropagateParams());
- assertIterableEquals(
- List.of(new Parameter("param1", "value1"), new Parameter("param2", "value2")),
- scriptlerBuilder.getParametersList());
+ });
}
}
diff --git a/src/test/java/org/jenkinsci/plugins/scriptler/util/GroovyScriptTest.java b/src/test/java/org/jenkinsci/plugins/scriptler/util/GroovyScriptTest.java
index 70bcb7a0..a9d27573 100644
--- a/src/test/java/org/jenkinsci/plugins/scriptler/util/GroovyScriptTest.java
+++ b/src/test/java/org/jenkinsci/plugins/scriptler/util/GroovyScriptTest.java
@@ -93,11 +93,6 @@ private Runnable createWork(final List assertionErrors, final in
private GroovyScript newInstance(ByteArrayOutputStream sos, String scriptSource, Parameter... params) {
return new GroovyScript(
- scriptSource, Arrays.asList(params), true, new StreamTaskListener(sos, StandardCharsets.UTF_8)) {
- @Override
- public ClassLoader getClassLoader() {
- return Thread.currentThread().getContextClassLoader();
- }
- };
+ scriptSource, Arrays.asList(params), true, new StreamTaskListener(sos, StandardCharsets.UTF_8));
}
}