diff --git a/test/src/test/groovy/hudson/cli/SetBuildParameterCommandTest.groovy b/test/src/test/groovy/hudson/cli/SetBuildParameterCommandTest.groovy deleted file mode 100644 index dcfba02ed84075531e8d038ce4faec03fa7a28e0..0000000000000000000000000000000000000000 --- a/test/src/test/groovy/hudson/cli/SetBuildParameterCommandTest.groovy +++ /dev/null @@ -1,82 +0,0 @@ -package hudson.cli - -import hudson.Functions -import hudson.Launcher -import hudson.model.AbstractBuild -import hudson.model.BuildListener -import hudson.model.ParametersAction -import hudson.model.ParametersDefinitionProperty -import hudson.model.ParameterDefinition -import hudson.model.Result -import hudson.model.StringParameterDefinition -import hudson.tasks.BatchFile -import hudson.tasks.Builder -import hudson.tasks.Shell -import jenkins.model.JenkinsLocationConfiguration -import org.junit.Assert -import org.junit.ClassRule -import org.junit.Rule -import org.junit.Test -import org.jvnet.hudson.test.BuildWatcher -import org.jvnet.hudson.test.JenkinsRule -import org.jvnet.hudson.test.TestBuilder - -/** - * @author Kohsuke Kawaguchi - */ -public class SetBuildParameterCommandTest { - @Rule - public JenkinsRule j = new JenkinsRule(); - - @ClassRule - public static BuildWatcher buildWatcher = new BuildWatcher(); - - @Test - public void cli() { - JenkinsLocationConfiguration.get().url = j.URL; - - def p = j.createFreeStyleProject(); - p.buildersList.add(new TestBuilder() { - @Override - boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { - def jar = j.jenkins.servletContext.getResource("/WEB-INF/jenkins-cli.jar") - build.workspace.child("cli.jar").copyFrom(jar); - - return true; - } - }); - List pd = [new StringParameterDefinition("a", ""), new StringParameterDefinition("b", "")]; - p.addProperty(new ParametersDefinitionProperty(pd)) - p.buildersList.add(createScriptBuilder("java -jar cli.jar -remoting -noKeyAuth set-build-parameter a b")) - p.buildersList.add(createScriptBuilder("java -jar cli.jar -remoting -noKeyAuth set-build-parameter a x")) - p.buildersList.add(createScriptBuilder("java -jar cli.jar -remoting -noKeyAuth set-build-parameter b y")) - - def r = [:]; - - def b = j.assertBuildStatusSuccess(p.scheduleBuild2(0)) - b.getAction(ParametersAction.class).parameters.each { v -> r[v.name]=v.value } - - assert r.equals(["a":"x", "b":"y"]); - - if (Functions.isWindows()) { - p.buildersList.add(new BatchFile("set BUILD_NUMBER=1\r\njava -jar cli.jar -remoting -noKeyAuth set-build-parameter a b")) - } else { - p.buildersList.add(new Shell("BUILD_NUMBER=1 java -jar cli.jar -remoting -noKeyAuth set-build-parameter a b")) - } - def b2 = j.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0).get()); - j.assertLogContains("#1 is not currently being built", b2) - r = [:]; - b.getAction(ParametersAction.class).parameters.each { v -> r[v.name]=v.value } - assert r.equals(["a":"x", "b":"y"]); - } - - //TODO: determine if this should be pulled out into JenkinsRule or something - /** - * Create a script based builder (either Shell or BatchFile) depending on platform - * @param script the contents of the script to run - * @return A Builder instance of either Shell or BatchFile - */ - private Builder createScriptBuilder(String script) { - return Functions.isWindows() ? new BatchFile(script) : new Shell(script); - } -} diff --git a/test/src/test/java/hudson/cli/SetBuildParameterCommandTest.java b/test/src/test/java/hudson/cli/SetBuildParameterCommandTest.java new file mode 100644 index 0000000000000000000000000000000000000000..937abe4628e1dddcd50778ccce13d7799a8693e5 --- /dev/null +++ b/test/src/test/java/hudson/cli/SetBuildParameterCommandTest.java @@ -0,0 +1,88 @@ +package hudson.cli; + +import com.google.common.collect.ImmutableMap; +import hudson.Functions; +import hudson.Launcher; +import hudson.model.AbstractBuild; +import hudson.model.BuildListener; +import hudson.model.FreeStyleBuild; +import hudson.model.FreeStyleProject; +import hudson.model.ParametersAction; +import hudson.model.ParametersDefinitionProperty; +import hudson.model.ParameterDefinition; +import hudson.model.Result; +import hudson.model.StringParameterDefinition; +import hudson.tasks.BatchFile; +import hudson.tasks.Builder; +import hudson.tasks.Shell; +import java.io.IOException; +import java.net.URL; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import static org.junit.Assert.*; +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; +import org.jvnet.hudson.test.BuildWatcher; +import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.TestBuilder; + +public class SetBuildParameterCommandTest { + + @Rule + public JenkinsRule j = new JenkinsRule(); + + @ClassRule + public static BuildWatcher buildWatcher = new BuildWatcher(); + + @Test + public void cli() throws Exception { + FreeStyleProject p = j.createFreeStyleProject(); + p.getBuildersList().add(new TestBuilder() { + @Override + public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { + URL jar = j.jenkins.servletContext.getResource("/WEB-INF/jenkins-cli.jar"); + build.getWorkspace().child("cli.jar").copyFrom(jar); + + return true; + } + }); + List pd = Arrays.asList(new StringParameterDefinition("a", ""), new StringParameterDefinition("b", "")); + p.addProperty(new ParametersDefinitionProperty(pd)); + p.getBuildersList().add(createScriptBuilder("java -jar cli.jar -remoting -noKeyAuth set-build-parameter a b")); + p.getBuildersList().add(createScriptBuilder("java -jar cli.jar -remoting -noKeyAuth set-build-parameter a x")); + p.getBuildersList().add(createScriptBuilder("java -jar cli.jar -remoting -noKeyAuth set-build-parameter b y")); + + Map r = new TreeMap<>(); + + FreeStyleBuild b = j.assertBuildStatusSuccess(p.scheduleBuild2(0)); + b.getAction(ParametersAction.class).getParameters().forEach(v -> r.put(v.getName(), v.getValue())); + + assertEquals(ImmutableMap.of("a", "x", "b", "y"), r); + + if (Functions.isWindows()) { + p.getBuildersList().add(new BatchFile("set BUILD_NUMBER=1\r\njava -jar cli.jar -remoting -noKeyAuth set-build-parameter a b")); + } else { + p.getBuildersList().add(new Shell("BUILD_NUMBER=1 java -jar cli.jar -remoting -noKeyAuth set-build-parameter a b")); + } + FreeStyleBuild b2 = j.assertBuildStatus(Result.FAILURE, p.scheduleBuild2(0).get()); + j.assertLogContains("#1 is not currently being built", b2); + r.clear(); + b.getAction(ParametersAction.class).getParameters().forEach(v -> r.put(v.getName(), v.getValue())); + assertEquals(ImmutableMap.of("a", "x", "b", "y"), r); + } + + //TODO: determine if this should be pulled out into JenkinsRule or something + /** + * Create a script based builder (either Shell or BatchFile) depending on + * platform + * @param script the contents of the script to run + * @return A Builder instance of either Shell or BatchFile + */ + private Builder createScriptBuilder(String script) { + return Functions.isWindows() ? new BatchFile(script) : new Shell(script); + } + +}