Skip to content

Commit 73d11f2

Browse files
committed
[FIXED JENKINS-50171] Don't use package names in loadedScripts keys.
It just makes things go badly.
1 parent a63e684 commit 73d11f2

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

src/main/java/org/jenkinsci/plugins/workflow/cps/CpsGroovyShell.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public void prepareScript(Script script) {
110110
public Script parse(GroovyCodeSource codeSource) throws CompilationFailedException {
111111
Script s = doParse(codeSource);
112112
if (execution!=null)
113-
execution.loadedScripts.put(s.getClass().getName(), codeSource.getScriptText());
113+
execution.loadedScripts.put(s.getClass().getSimpleName(), codeSource.getScriptText());
114114
if (this.execution != null && !this.execution.getDurabilityHint().isPersistWithEveryStep()) {
115115
// Ensure we persist new scripts
116116
this.execution.saveOwner();

src/test/java/org/jenkinsci/plugins/workflow/cps/steps/RestartingLoadStepTest.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.jenkinsci.plugins.workflow.cps.steps;
22

33
import javax.inject.Inject;
4+
5+
import hudson.FilePath;
46
import jenkins.model.Jenkins;
57
import org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval;
68
import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition;
@@ -157,4 +159,55 @@ public void pauseInsideLoad() throws Exception {
157159
});
158160
}
159161

162+
@Issue("JENKINS-50172")
163+
@Test public void loadAndUnnamedClassesInPackage() {
164+
story.addStep(new Statement() {
165+
@Override public void evaluate() throws Throwable {
166+
WorkflowJob p = story.j.jenkins.createProject(WorkflowJob.class, "p");
167+
FilePath pkgDir = story.j.jenkins.getWorkspaceFor(p).child("src/org/foo/devops");
168+
pkgDir.mkdirs();
169+
pkgDir.child("Utility.groovy").write("package org.foo.devops\n" +
170+
"def isValueExist(String value) {\n" +
171+
" if(value == null || value.trim().length() == 0 || value.trim().equals(\"\\\"\\\"\")) {\n" +
172+
" return false\n" +
173+
" }\n" +
174+
" return true\n" +
175+
"}\n" +
176+
"return this;\n", null);
177+
pkgDir.child("JenkinsEnvironment.groovy").write("package org.foo.devops\n" +
178+
"def loadProdConfiguration() {\n" +
179+
" def valueMap = [:]\n" +
180+
" valueMap.put('key','value')\n" +
181+
" return valueMap\n" +
182+
"}\n" +
183+
"return this;\n", null);
184+
185+
p.setDefinition(new CpsFlowDefinition("def util\n" +
186+
"def config\n" +
187+
"def util2\n" +
188+
"node('master') {\n" +
189+
" config = load 'src/org/foo/devops/JenkinsEnvironment.groovy'\n" +
190+
" util = load 'src/org/foo/devops/Utility.groovy'\n" +
191+
" config.loadProdConfiguration()\n" +
192+
"}\n" +
193+
"util.isValueExist(\"\")\n" +
194+
"semaphore 'wait'\n" +
195+
"node('master') {\n" +
196+
" util2 = load 'src/org/foo/devops/Utility.groovy'\n" +
197+
" util = load 'src/org/foo/devops/Utility.groovy'\n" +
198+
"}\n", true));
199+
WorkflowRun b = p.scheduleBuild2(0).getStartCondition().get();
200+
SemaphoreStep.waitForStart("wait/1", b);
201+
}
202+
});
203+
story.addStep(new Statement() {
204+
@Override public void evaluate() throws Throwable {
205+
WorkflowJob p = story.j.jenkins.getItemByFullName("p", WorkflowJob.class);
206+
WorkflowRun b = p.getBuildByNumber(1);
207+
SemaphoreStep.success("wait/1", null);
208+
story.j.assertBuildStatusSuccess(story.j.waitForCompletion(b));
209+
}
210+
});
211+
}
212+
160213
}

0 commit comments

Comments
 (0)