diff --git a/src/main/java/hudson/plugins/msbuild/MsBuildBuilder.java b/src/main/java/hudson/plugins/msbuild/MsBuildBuilder.java index ee12f15..9a82c02 100644 --- a/src/main/java/hudson/plugins/msbuild/MsBuildBuilder.java +++ b/src/main/java/hudson/plugins/msbuild/MsBuildBuilder.java @@ -54,6 +54,24 @@ public class MsBuildBuilder extends Builder { private final boolean unstableIfWarnings; private final boolean doNotUseChcpCommand; + /** + * When this builder is created in the project configuration step, + * the builder object will be created from the strings below. + * + * @param msBuildName The Visual Studio logical name + * @param msBuildFile The name/location of the MSBuild file + * @param cmdLineArgs Whitespace separated list of command line arguments + * @param buildVariablesAsProperties If true, pass build variables as properties to MSBuild + * @param continueOnBuildFailure If true, job will continue dispite of MSBuild build failure + * @param unstableIfWarnings If true, job will be unstable if there are warnings + */ + @Deprecated + @SuppressWarnings("unused") + public MsBuildBuilder(String msBuildName, String msBuildFile, String cmdLineArgs, boolean buildVariablesAsProperties, boolean continueOnBuildFailure, boolean unstableIfWarnings) { + // By default, doNotUseChcpCommand=false + this(msBuildName, msBuildFile, cmdLineArgs, buildVariablesAsProperties, continueOnBuildFailure, unstableIfWarnings, false); + } + /** * When this builder is created in the project configuration step, * the builder object will be created from the strings below. diff --git a/src/test/java/hudson/plugins/msbuild/MsBuildBuilderTest.java b/src/test/java/hudson/plugins/msbuild/MsBuildBuilderTest.java index 5c85640..ed0dab9 100644 --- a/src/test/java/hudson/plugins/msbuild/MsBuildBuilderTest.java +++ b/src/test/java/hudson/plugins/msbuild/MsBuildBuilderTest.java @@ -1,6 +1,10 @@ package hudson.plugins.msbuild; +import hudson.model.FreeStyleProject; +import org.junit.Rule; import org.junit.Test; +import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.recipes.LocalData; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -10,6 +14,9 @@ */ public class MsBuildBuilderTest { + @Rule + public JenkinsRule r = new JenkinsRule(); + @Test public void shouldStripQuotedArguments() { final String quotedPlatform = "/p:Platform=\"Any CPU\""; @@ -40,4 +47,15 @@ public void endEscapedCharacter() { assertEquals(oneArgumentsWithEndBackslash, tokenizedArgs[0]); } + @Test + @LocalData + public void configRoundtrip() { + try { + FreeStyleProject project = (FreeStyleProject)r.jenkins.getAllItems().get(0); + r.configRoundtrip(project); + } catch (Exception e) { + throw new AssertionError("Not valid configuration for MsBuild"); + } + } + } diff --git a/src/test/resources/hudson/plugins/msbuild/MsBuildBuilderTest/configRoundtrip.zip b/src/test/resources/hudson/plugins/msbuild/MsBuildBuilderTest/configRoundtrip.zip new file mode 100644 index 0000000..b81ee36 Binary files /dev/null and b/src/test/resources/hudson/plugins/msbuild/MsBuildBuilderTest/configRoundtrip.zip differ