提交 f971310d 编写于 作者: J Jesse Glick

Merge pull request #1732 from jglick/PluginAutomaticTestBuilder

PluginAutomaticTestBuilder improvements
......@@ -23,11 +23,13 @@
*/
package org.jvnet.hudson.test;
import hudson.PluginWrapper;
import hudson.cli.CLICommand;
import junit.framework.TestSuite;
import java.io.File;
import java.util.Map;
import jenkins.model.Jenkins;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Called by the code generated by maven-hpi-plugin to build tests for plugins.
......@@ -35,6 +37,10 @@ import java.util.Map;
* @author Kohsuke Kawaguchi
*/
public class PluginAutomaticTestBuilder {
/** {@code InjectedTest} mistakenly calls {@link #build} as an instance method, and uses this constructor. */
public PluginAutomaticTestBuilder() {}
/**
* @param params
* Various information about the plugin that maven-hpi-plugin adds.
......@@ -46,18 +52,17 @@ public class PluginAutomaticTestBuilder {
* testOutputDirectory (String) : target/test-classes.
*/
public static TestSuite build(Map<String,?> params) throws Exception {
TestSuite suite = new TestSuite();
// automatic Jelly tests
if (params.containsKey("outputDirectory") // shouldn't happen, but be defensive
|| notSkipTests("JellyTest")) {
|| notSkipTests("JellyTest")) { // TODO this is probably obsolete given -Dmaven-hpi-plugin.disabledTestInjection
File outputDirectory = new File((String)params.get("outputDirectory"));
suite.addTest(JellyTestSuiteBuilder.build(outputDirectory,toBoolean(params.get("requirePI"))));
TestSuite suite = JellyTestSuiteBuilder.build(outputDirectory,toBoolean(params.get("requirePI")));
suite.addTest(new OtherTests("testCliSanity", params));
suite.addTest(new OtherTests("testPluginActive", params));
return suite;
} else {
return new TestSuite();
}
suite.addTestSuite(CliSanityTest.class);
return suite;
}
private static boolean toBoolean(Object requirePI) {
......@@ -73,9 +78,27 @@ public class PluginAutomaticTestBuilder {
return !Boolean.getBoolean("hpiTest.skip"+propertyName);
}
public static class CliSanityTest extends HudsonTestCase {
public static class OtherTests extends TestCase {
private final Map<String,?> params;
public OtherTests(String name, Map<String,?> params) {
super(name);
this.params = params;
}
public void testCliSanity() {
CLICommand.clone("help");
}
public void testPluginActive() {
String plugin = (String) params.get("artifactId");
if (plugin != null) {
PluginWrapper pw = Jenkins.getInstance().getPluginManager().getPlugin(plugin);
assertNotNull(pw);
assertTrue(plugin + " was not active", pw.isActive());
}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册