Skip to content

Commit a5143ee

Browse files
authored
Merge pull request #214 from abayer/jenkins-50171
[FIXED JENKINS-50171] Don't use package names in loadedScripts keys.
2 parents ce72271 + d83918d commit a5143ee

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-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: 64 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,66 @@ 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 outerValue) {\n" +
171+
" return new Object() {\n" +
172+
" def isValueExist(String value) {\n" +
173+
" if(value == null || value.trim().length() == 0 || value.trim().equals(\"\\\"\\\"\")) {\n" +
174+
" return false\n" +
175+
" }\n" +
176+
" return true\n" +
177+
" }\n" +
178+
" }.isValueExist(outerValue)\n" +
179+
"}\n" +
180+
"return this;\n", null);
181+
pkgDir.child("JenkinsEnvironment.groovy").write("package org.foo.devops\n" +
182+
"class InnerEnvClass {\n" +
183+
" def loadProdConfiguration() {\n" +
184+
" def valueMap = [:]\n" +
185+
" valueMap.put('key','value')\n" +
186+
" return valueMap\n" +
187+
" }\n" +
188+
"}\n" +
189+
"def loadProdConfiguration() {\n" +
190+
" return new InnerEnvClass().loadProdConfiguration()\n" +
191+
"}\n" +
192+
"return this;\n", null);
193+
194+
p.setDefinition(new CpsFlowDefinition("def util\n" +
195+
"def config\n" +
196+
"def util2\n" +
197+
"node('master') {\n" +
198+
" config = load 'src/org/foo/devops/JenkinsEnvironment.groovy'\n" +
199+
" util = load 'src/org/foo/devops/Utility.groovy'\n" +
200+
" config.loadProdConfiguration()\n" +
201+
"}\n" +
202+
"util.isValueExist(\"\")\n" +
203+
"semaphore 'wait'\n" +
204+
"node('master') {\n" +
205+
" util2 = load 'src/org/foo/devops/Utility.groovy'\n" +
206+
" util = load 'src/org/foo/devops/Utility.groovy'\n" +
207+
" assert util.isValueExist('foo') == true\n" +
208+
" assert util2.isValueExist('foo') == true\n" +
209+
"}\n", true));
210+
WorkflowRun b = p.scheduleBuild2(0).getStartCondition().get();
211+
SemaphoreStep.waitForStart("wait/1", b);
212+
}
213+
});
214+
story.addStep(new Statement() {
215+
@Override public void evaluate() throws Throwable {
216+
WorkflowJob p = story.j.jenkins.getItemByFullName("p", WorkflowJob.class);
217+
WorkflowRun b = p.getBuildByNumber(1);
218+
SemaphoreStep.success("wait/1", null);
219+
story.j.assertBuildStatusSuccess(story.j.waitForCompletion(b));
220+
}
221+
});
222+
}
223+
160224
}

0 commit comments

Comments
 (0)