提交 f8dd5842 编写于 作者: A Andrew Bayer

[FIXED JENKINS-45909] ReverseBuildTrigger.upstreamProjects should be null safe

上级 7550d796
......@@ -170,7 +170,7 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
}
@Override public void buildDependencyGraph(final AbstractProject downstream, DependencyGraph graph) {
for (AbstractProject upstream : Items.fromNameList(downstream.getParent(), upstreamProjects, AbstractProject.class)) {
for (AbstractProject upstream : Items.fromNameList(downstream.getParent(), Util.fixNull(upstreamProjects), AbstractProject.class)) {
graph.addDependency(new DependencyGraph.Dependency(upstream, downstream) {
@Override public boolean shouldTriggerBuild(AbstractBuild upstreamBuild, TaskListener listener, List<Action> actions) {
return shouldTrigger(upstreamBuild, listener);
......@@ -253,7 +253,7 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
continue;
}
List<Job> upstreams =
Items.fromNameList(downstream.getParent(), trigger.upstreamProjects, Job.class);
Items.fromNameList(downstream.getParent(), Util.fixNull(trigger.upstreamProjects), Job.class);
LOGGER.log(Level.FINE, "from {0} see upstreams {1}", new Object[]{downstream, upstreams});
for (Job upstream : upstreams) {
if (upstream instanceof AbstractProject && downstream instanceof AbstractProject) {
......@@ -310,8 +310,8 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
ReverseBuildTrigger t = ParameterizedJobMixIn.getTrigger(p, ReverseBuildTrigger.class);
if (t != null) {
String revised =
Items.computeRelativeNamesAfterRenaming(oldFullName, newFullName, t.upstreamProjects,
p.getParent());
Items.computeRelativeNamesAfterRenaming(oldFullName, newFullName,
Util.fixNull(t.upstreamProjects), p.getParent());
if (!revised.equals(t.upstreamProjects)) {
t.upstreamProjects = revised;
try {
......
......@@ -209,4 +209,19 @@ public class ReverseBuildTriggerTest {
assertThat("Build should be not triggered", downstreamJob1.getBuilds(), hasSize(0));
assertThat("Build should be triggered", downstreamJob2.getBuilds(), not(hasSize(0)));
}
@Issue("JENKINS-45909")
@Test
public void nullUpstreamProjectsNoNPE() throws Exception {
//job with trigger.upstreamProjects == null
final FreeStyleProject downstreamJob1 = r.createFreeStyleProject("downstream1");
ReverseBuildTrigger trigger = new ReverseBuildTrigger(null);
downstreamJob1.addTrigger(trigger);
downstreamJob1.save();
r.configRoundtrip(downstreamJob1);
// The reported issue was with Pipeline jobs, which calculate their dependency graphs via
// ReverseBuildTrigger.RunListenerImpl, so an additional test may be needed downstream.
trigger.buildDependencyGraph(downstreamJob1, Jenkins.getInstance().getDependencyGraph());
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册