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

Null safety during failing tests (BuildTriggerTest.testMavenBuildTrigger in this case).

java.lang.NullPointerException
	at hudson.model.Job.getBuildDir(Job.java:790)
	at hudson.model.Run.getRootDir(Run.java:993)
	at hudson.model.Run.getLogFile(Run.java:1306)
	at hudson.model.Run.execute(Run.java:1664)
	at hudson.maven.MavenBuild.access$900(MavenBuild.java:94)
	at hudson.maven.MavenBuild$ProxyImpl2.close(MavenBuild.java:636)
	at hudson.maven.AbstractMavenBuilder.end(AbstractMavenBuilder.java:106)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:839)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:523)
	at hudson.model.Run.execute(Run.java:1688)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:519)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
java.lang.NullPointerException
	at hudson.model.BuildStepListener.all(BuildStepListener.java:31)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:739)
	at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:714)
	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.cleanUp(MavenModuleSetBuild.java:1054)
	at hudson.model.Run.execute(Run.java:1733)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:519)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
上级 8c9430f1
......@@ -5,8 +5,6 @@ import hudson.ExtensionPoint;
import hudson.tasks.BuildStep;
import jenkins.model.Jenkins;
import java.util.List;
/**
* Receives events that happen as a build executes {@link BuildStep}s.
* @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
......@@ -28,6 +26,7 @@ public abstract class BuildStepListener implements ExtensionPoint {
* Returns all the registered {@link BuildStepListener}s.
*/
public static ExtensionList<BuildStepListener> all() {
// TODO should have a null-safe version when Jenkins.getInstance() is null; would require changes in ExtensionList
return Jenkins.getInstance().getExtensionList(BuildStepListener.class);
}
}
......@@ -787,7 +787,11 @@ public abstract class Job<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
* @see RunMap
*/
public File getBuildDir() {
return Jenkins.getInstance().getBuildDirFor(this);
Jenkins j = Jenkins.getInstance();
if (j == null) {
return new File(getRootDir(), "builds");
}
return j.getBuildDirFor(this);
}
/**
......
......@@ -701,7 +701,12 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
};
/**
* Gets the Jenkins singleton.
* @return the instance, or null if Jenkins has not been started, or was already shut down
*/
@CLIResolver
@CheckForNull
public static Jenkins getInstance() {
return HOLDER.getInstance();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册