diff --git a/core/src/main/java/hudson/os/windows/ManagedWindowsServiceConnector.java b/core/src/main/java/hudson/os/windows/ManagedWindowsServiceConnector.java index 0f71e9c5b2248917e2cfacd834917eb0e03efa37..02e2793fd8ada84db2ecc8c7a2278f9fb75e3bff 100644 --- a/core/src/main/java/hudson/os/windows/ManagedWindowsServiceConnector.java +++ b/core/src/main/java/hudson/os/windows/ManagedWindowsServiceConnector.java @@ -53,8 +53,8 @@ public class ManagedWindowsServiceConnector extends ComputerConnector { public String getDisplayName() { return Messages.ManagedWindowsServiceLauncher_DisplayName(); } - } - // used by Jelly - public static final Class CONFIG_DELEGATE_TO = ManagedWindowsServiceLauncher.class; + // used by Jelly + public static final Class CONFIG_DELEGATE_TO = ManagedWindowsServiceLauncher.class; + } } diff --git a/core/src/main/resources/hudson/os/windows/ManagedWindowsServiceConnector/config.jelly b/core/src/main/resources/hudson/os/windows/ManagedWindowsServiceConnector/config.jelly index 6d752f2cea3bb42b532437cf0a489f8813bf0d74..8516d25bd4152b0d7d19ba0df62390be30099254 100644 --- a/core/src/main/resources/hudson/os/windows/ManagedWindowsServiceConnector/config.jelly +++ b/core/src/main/resources/hudson/os/windows/ManagedWindowsServiceConnector/config.jelly @@ -23,5 +23,5 @@ THE SOFTWARE. --> - + \ No newline at end of file diff --git a/core/src/main/resources/hudson/slaves/CommandConnector/config.jelly b/core/src/main/resources/hudson/slaves/CommandConnector/config.jelly new file mode 100644 index 0000000000000000000000000000000000000000..1da8b8673fb8b21304b38a40e79fa2d23a997715 --- /dev/null +++ b/core/src/main/resources/hudson/slaves/CommandConnector/config.jelly @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/test/src/main/java/org/jvnet/hudson/test/ComputerConnectorTester.java b/test/src/main/java/org/jvnet/hudson/test/ComputerConnectorTester.java new file mode 100644 index 0000000000000000000000000000000000000000..872039bad149d06453ec32595bb01d33109261e2 --- /dev/null +++ b/test/src/main/java/org/jvnet/hudson/test/ComputerConnectorTester.java @@ -0,0 +1,67 @@ +/* + * The MIT License + * + * Copyright (c) 2010, InfraDNA, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package org.jvnet.hudson.test; + +import hudson.Extension; +import hudson.model.AbstractDescribableImpl; +import hudson.model.Describable; +import hudson.model.Descriptor; +import hudson.slaves.ComputerConnector; +import hudson.slaves.ComputerConnectorDescriptor; +import org.kohsuke.stapler.StaplerRequest; + +import javax.servlet.ServletException; +import java.io.IOException; +import java.util.List; + +/** + * Test bed to verify the configuration roundtripness of the {@link ComputerConnector}. + * + * @author Kohsuke Kawaguchi + * @see HudsonTestCase#computerConnectorTester + */ +public class ComputerConnectorTester extends AbstractDescribableImpl { + public final HudsonTestCase testCase; + public ComputerConnector connector; + + public ComputerConnectorTester(HudsonTestCase testCase) { + this.testCase = testCase; + } + + public void doConfigSubmit(StaplerRequest req) throws IOException, ServletException { + connector = req.bindJSON(ComputerConnector.class, req.getSubmittedForm().getJSONObject("connector")); + } + + public List getConnectorDescriptors() { + return ComputerConnectorDescriptor.all(); + } + + @Extension + public static class DescriptorImpl extends Descriptor { + @Override + public String getDisplayName() { + return ""; + } + } +} diff --git a/test/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java b/test/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java index 0e4d72fd31e4b96cfcd098fedc16d038fe47d16c..a70f897975380afc779c99f8cc38de8120f729be 100644 --- a/test/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java +++ b/test/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java @@ -33,6 +33,7 @@ import hudson.model.Queue.Executable; import hudson.security.AbstractPasswordBasedSecurityRealm; import hudson.security.GroupDetails; import hudson.security.SecurityRealm; +import hudson.slaves.ComputerConnector; import hudson.tasks.Builder; import hudson.tasks.Publisher; import hudson.tools.ToolProperty; @@ -203,6 +204,8 @@ public abstract class HudsonTestCase extends TestCase implements RootAction { */ public boolean useLocalPluginManager; + public ComputerConnectorTester computerConnectorTester = new ComputerConnectorTester(this); + protected HudsonTestCase(String name) { super(name); @@ -699,6 +702,12 @@ public abstract class HudsonTestCase extends TestCase implements RootAction { return (P)p.getPublishersList().get(before.getClass()); } + protected C configRoundtrip(C before) throws Exception { + computerConnectorTester.connector = before; + submit(createWebClient().goTo("self/computerConnectorTester/configure").getFormByName("config")); + return (C)computerConnectorTester.connector; + } + /** * Asserts that the outcome of the build is a specific outcome. diff --git a/test/src/main/resources/org/jvnet/hudson/test/ComputerConnectorTester/configure.jelly b/test/src/main/resources/org/jvnet/hudson/test/ComputerConnectorTester/configure.jelly new file mode 100644 index 0000000000000000000000000000000000000000..60f792c7946cf0a9483d9df7bb305383675fd168 --- /dev/null +++ b/test/src/main/resources/org/jvnet/hudson/test/ComputerConnectorTester/configure.jelly @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + diff --git a/test/src/test/java/hudson/slaves/ComputerConnectorTest.java b/test/src/test/java/hudson/slaves/ComputerConnectorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9112f4f10d63035cf0d89a472a9a99cd14597688 --- /dev/null +++ b/test/src/test/java/hudson/slaves/ComputerConnectorTest.java @@ -0,0 +1,36 @@ +/* + * The MIT License + * + * Copyright (c) 2010, InfraDNA, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package hudson.slaves; + +import org.jvnet.hudson.test.HudsonTestCase; + +/** + * @author Kohsuke Kawaguchi + */ +public class ComputerConnectorTest extends HudsonTestCase { + public void testConfigRoundtrip() throws Exception { + CommandConnector cc = new CommandConnector("abc def"); + assertEqualDataBoundBeans(cc,configRoundtrip(cc)); + } +}