提交 042a4cd8 编写于 作者: M Mikko Peltonen

Add test cases for JENKINS-8054

上级 c15378ef
......@@ -36,6 +36,8 @@ import hudson.security.GroupDetails;
import hudson.security.SecurityRealm;
import hudson.slaves.ComputerConnector;
import hudson.tasks.Builder;
import hudson.tasks.BuildWrapper;
import hudson.tasks.BuildWrapperDescriptor;
import hudson.tasks.Publisher;
import hudson.tools.ToolProperty;
import hudson.remoting.Which;
......@@ -96,6 +98,7 @@ import javax.servlet.ServletContextEvent;
import junit.framework.TestCase;
import net.sf.json.JSONObject;
import net.sourceforge.htmlunit.corejs.javascript.Context;
import net.sourceforge.htmlunit.corejs.javascript.ContextFactory.Listener;
import org.acegisecurity.AuthenticationException;
......@@ -1689,4 +1692,37 @@ public abstract class HudsonTestCase extends TestCase implements RootAction {
// this also prevents tests from falsely advertising Hudson
DNSMultiCast.disabled = true;
}
public static class TestBuildWrapper extends BuildWrapper {
public Result buildResultInTearDown;
@Override
public Environment setUp(AbstractBuild build, Launcher launcher, BuildListener listener) throws IOException, InterruptedException {
return new BuildWrapper.Environment() {
@Override
public boolean tearDown(AbstractBuild build, BuildListener listener) throws IOException, InterruptedException {
buildResultInTearDown = build.getResult();
return true;
}
};
}
@Extension
public static class TestBuildWrapperDescriptor extends BuildWrapperDescriptor {
@Override
public boolean isApplicable(AbstractProject<?, ?> project) {
return true;
}
@Override
public BuildWrapper newInstance(StaplerRequest req, JSONObject formData) {
throw new UnsupportedOperationException();
}
@Override
public String getDisplayName() {
return this.getClass().getName();
}
}
}
}
package hudson.maven;
import hudson.Launcher;
import hudson.model.BuildListener;
import hudson.model.Result;
import hudson.model.Run;
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.ExtractResourceSCM;
import org.jvnet.hudson.test.HudsonTestCase;
import java.io.IOException;
public class AbortedMavenBuildTest extends HudsonTestCase {
@Bug(8054)
public void testBuildWrapperSeesAbortedStatus() throws Exception {
configureDefaultMaven();
MavenModuleSet project = createMavenProject();
TestBuildWrapper wrapper = new TestBuildWrapper();
project.getBuildWrappersList().add(wrapper);
project.getReporters().add(new AbortingReporter());
project.setGoals("clean");
project.setScm(new ExtractResourceSCM(getClass().getResource("maven-empty-mod.zip")));
Run build = project.scheduleBuild2(0).get();
assertEquals(Result.ABORTED, build.getResult());
assertEquals(Result.ABORTED, wrapper.buildResultInTearDown);
}
private static class AbortingReporter extends MavenReporter {
@Override
public boolean end(MavenBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
throw new InterruptedException();
}
}
}
package hudson.model;
import hudson.Launcher;
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.HudsonTestCase;
import org.jvnet.hudson.test.TestBuilder;
import java.io.IOException;
public class AbortedFreeStyleBuildTest extends HudsonTestCase {
@Bug(8054)
public void testBuildWrapperSeesAbortedStatus() throws Exception {
FreeStyleProject project = createFreeStyleProject();
TestBuildWrapper wrapper = new TestBuildWrapper();
project.getBuildWrappersList().add(wrapper);
project.getBuildersList().add(new AbortingBuilder());
Run build = project.scheduleBuild2(0).get();
assertEquals(Result.ABORTED, build.getResult());
assertEquals(Result.ABORTED, wrapper.buildResultInTearDown);
}
private static class AbortingBuilder extends TestBuilder {
@Override
public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
throw new InterruptedException();
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册