From 2b671dab651d1806218a5f87a0ce3186c46aceb9 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 23 Apr 2019 15:25:21 -0400 Subject: [PATCH 1/3] Testing against workflow-cps 2.67. --- Jenkinsfile | 2 +- pom.xml | 26 ++++++++++++++----- .../workflow/cps/global/GrapeTest.java | 3 +-- .../WorkflowLibRepositoryLocalTest.java | 6 +++-- .../workflow/libs/FolderLibrariesTest.java | 4 +-- 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 361ba59a..87a086da 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1 +1 @@ -buildPlugin(jenkinsVersions: [null, '2.138.1']) +buildPlugin(configurations: buildPlugin.recommendedConfigurations()) diff --git a/pom.xml b/pom.xml index ad5311cc..edf6483e 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ org.jenkins-ci.plugins plugin - 3.28 + 3.42 org.jenkins-ci.plugins.workflow @@ -64,13 +64,15 @@ 2.14 -SNAPSHOT - 2.107.3 + 2.121.1 8 - 2.57 + 2.67 3.6.4 2.2.7 2.4 2.10 + 2.19 + 3.2 @@ -78,6 +80,11 @@ workflow-cps ${workflow-cps-plugin.version} + + org.jenkins-ci.plugins.workflow + workflow-step-api + ${workflow-step-api-plugin.version} + org.jenkins-ci.plugins git-server @@ -112,12 +119,12 @@ org.jenkins-ci.plugins script-security - 1.46 + 1.58 org.jenkins-ci.plugins structs - 1.15 + 1.17 org.jenkins-ci.plugins @@ -137,7 +144,12 @@ org.jenkins-ci.plugins.workflow workflow-support - 2.17 + ${workflow-support-plugin.version} + + + org.jenkins-ci.plugins.workflow + workflow-support + ${workflow-support-plugin.version} tests test @@ -182,7 +194,7 @@ org.jenkins-ci.plugins.workflow workflow-step-api - 2.13 + ${workflow-step-api-plugin.version} tests test diff --git a/src/test/java/org/jenkinsci/plugins/workflow/cps/global/GrapeTest.java b/src/test/java/org/jenkinsci/plugins/workflow/cps/global/GrapeTest.java index 473aca39..a3677558 100644 --- a/src/test/java/org/jenkinsci/plugins/workflow/cps/global/GrapeTest.java +++ b/src/test/java/org/jenkinsci/plugins/workflow/cps/global/GrapeTest.java @@ -193,8 +193,7 @@ public class GrapeTest { "new ArrayIntList()", true)); // Even assuming signature approvals, we do not want to allow Grape to be used from sandboxed scripts. ScriptApproval.get().approveSignature("new org.apache.commons.collections.primitives.ArrayIntList"); - // Specifically: java.lang.RuntimeException: No suitable ClassLoader found for grab - story.j.assertLogContains("GrapeIvy.chooseClassLoader", story.j.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0))); + story.j.assertLogContains("WorkflowScript: 1: unable to resolve class org.apache.commons.collections.primitives.ArrayIntList", story.j.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0))); } }); } diff --git a/src/test/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepositoryLocalTest.java b/src/test/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepositoryLocalTest.java index 9e83a84a..3df42fce 100644 --- a/src/test/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepositoryLocalTest.java +++ b/src/test/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepositoryLocalTest.java @@ -19,6 +19,7 @@ import java.io.File; import java.net.URL; import java.util.Collection; +import org.jenkinsci.plugins.workflow.job.WorkflowJob; public class WorkflowLibRepositoryLocalTest extends Assert { @Rule @@ -60,8 +61,9 @@ public void initialRepoShouldBeEmpty() throws Exception { git.push().call(); // test if this script is accessible from form validation - assertEquals(cfdd.doCheckScriptCompile("import org.acme.Foo"), CpsFlowDefinitionValidator.CheckStatus.SUCCESS.asJSON()); - assertNotEquals(cfdd.doCheckScriptCompile("import org.acme.NoSuchThing").toString(), CpsFlowDefinitionValidator.CheckStatus.SUCCESS.asJSON().toString()); // control test + WorkflowJob p = j.createProject(WorkflowJob.class); + assertEquals(cfdd.doCheckScriptCompile(p, "import org.acme.Foo"), CpsFlowDefinitionValidator.CheckStatus.SUCCESS.asJSON()); + assertNotEquals(cfdd.doCheckScriptCompile(p, "import org.acme.NoSuchThing").toString(), CpsFlowDefinitionValidator.CheckStatus.SUCCESS.asJSON().toString()); // control test // valid from script-security point of view assertSame(cfdd.doCheckScript("import org.acme.Foo", true), FormValidation.ok()); assertSame(cfdd.doCheckScript("import org.acme.NoSuchThing", true), FormValidation.ok()); diff --git a/src/test/java/org/jenkinsci/plugins/workflow/libs/FolderLibrariesTest.java b/src/test/java/org/jenkinsci/plugins/workflow/libs/FolderLibrariesTest.java index 8fd83f22..f6dd7ce0 100644 --- a/src/test/java/org/jenkinsci/plugins/workflow/libs/FolderLibrariesTest.java +++ b/src/test/java/org/jenkinsci/plugins/workflow/libs/FolderLibrariesTest.java @@ -176,9 +176,7 @@ public class FolderLibrariesTest { WorkflowJob p = d.createProject(WorkflowJob.class, "p"); p.setDefinition(new CpsFlowDefinition("@Library('grape@master') import pkg.Wrapper; echo(/should not have been able to run ${pkg.Wrapper.list()}/)", true)); ScriptApproval.get().approveSignature("new org.apache.commons.collections.primitives.ArrayIntList"); - // Groovy 1: java.lang.RuntimeException: No suitable ClassLoader found for grab (within groovy.grape.GrapeIvy.chooseClassLoader) - // Groovy 2: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod groovy.grape.Grape grab java.util.Map java.util.Map[] - r.assertLogContains("groovy.grape.Grape", r.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0))); + r.assertLogContains("Wrapper.groovy: 2: unable to resolve class org.apache.commons.collections.primitives.ArrayIntList", r.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0))); } @Issue("JENKINS-43019") From a02eaebeb352827881ca7f912a7e5e060d65ca77 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 23 Apr 2019 16:02:30 -0400 Subject: [PATCH 2/3] SpotBugs --- .../org/jenkinsci/plugins/workflow/libs/SCMSourceRetriever.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/jenkinsci/plugins/workflow/libs/SCMSourceRetriever.java b/src/main/java/org/jenkinsci/plugins/workflow/libs/SCMSourceRetriever.java index 0029548e..53129837 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/libs/SCMSourceRetriever.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/libs/SCMSourceRetriever.java @@ -24,6 +24,7 @@ package org.jenkinsci.plugins.workflow.libs; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.AbortException; import hudson.Extension; import hudson.ExtensionList; @@ -122,6 +123,7 @@ private static T retrySCMOperation(TaskListener listener, Callable task) return ret; } + @SuppressFBWarnings(value = "RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE", justification = "apparently bogus complaint about redundant nullcheck in try-with-resources") static void doRetrieve(String name, boolean changelog, @Nonnull SCM scm, FilePath target, Run run, TaskListener listener) throws Exception { // Adapted from CpsScmFlowDefinition: SCMStep delegate = new GenericSCMStep(scm); From bdfc5df71a5ecfe06b339de1d33c3a9f5ed34b5b Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 23 Apr 2019 16:42:18 -0400 Subject: [PATCH 3/3] Test failure. Unclear if it represents an actual bug. --- .../org/jenkinsci/plugins/workflow/libs/ResourceStepTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/org/jenkinsci/plugins/workflow/libs/ResourceStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/libs/ResourceStepTest.java index a191fd5e..f813b802 100644 --- a/src/test/java/org/jenkinsci/plugins/workflow/libs/ResourceStepTest.java +++ b/src/test/java/org/jenkinsci/plugins/workflow/libs/ResourceStepTest.java @@ -24,6 +24,7 @@ package org.jenkinsci.plugins.workflow.libs; +import hudson.Functions; import hudson.model.Result; import hudson.model.Run; import java.nio.charset.StandardCharsets; @@ -37,6 +38,7 @@ import org.apache.commons.codec.binary.Base64; import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; import org.jenkinsci.plugins.workflow.job.WorkflowJob; +import static org.junit.Assume.*; import org.junit.Test; import org.junit.ClassRule; import org.junit.Rule; @@ -90,6 +92,7 @@ public class ResourceStepTest { @Issue("JENKINS-52313") @Test public void specifyResourceEncoding() throws Exception { + assumeFalse("TODO mojibake on windows-11-2.164.1", Functions.isWindows()); sampleRepo.init(); sampleRepo.write("src/pkg/Stuff.groovy", "package pkg; class Stuff {" + "static def utf8(script) {script.libraryResource(resource: 'pkg/utf8', encoding: 'ISO-8859-15')}\n" +