|
1 | 1 | package org.jenkinsci.plugins.workflow.cps.steps; |
2 | 2 |
|
3 | 3 | import javax.inject.Inject; |
| 4 | + |
| 5 | +import hudson.FilePath; |
4 | 6 | import jenkins.model.Jenkins; |
5 | 7 | import org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval; |
6 | 8 | import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; |
@@ -157,4 +159,66 @@ public void pauseInsideLoad() throws Exception { |
157 | 159 | }); |
158 | 160 | } |
159 | 161 |
|
| 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 | + |
160 | 224 | } |
0 commit comments