Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
339dd4ac
J
jenkins
项目概览
LinuxSuRen
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
339dd4ac
编写于
10月 03, 2015
作者:
O
Oleg Nenashev
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1842 from KostyaSha/patch-3
[FIXED JENKINS-29876] CheckForNull job in ReverseBuildTrigger
上级
5e2b1542
45e4e990
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
2 deletion
+37
-2
core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java
core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java
+2
-2
test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java
...c/test/java/jenkins/triggers/ReverseBuildTriggerTest.java
+35
-0
未找到文件。
core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java
浏览文件 @
339dd4ac
...
...
@@ -107,7 +107,7 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
private
boolean
shouldTrigger
(
Run
upstreamBuild
,
TaskListener
listener
)
{
Jenkins
jenkins
=
Jenkins
.
getInstance
();
if
(
jenkins
==
null
)
{
if
(
jenkins
==
null
||
job
==
null
)
{
return
false
;
}
// This checks Item.READ also on parent folders; note we are checking as the upstream auth currently:
...
...
@@ -147,7 +147,7 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
}
}
@Override
public
void
start
(
Job
project
,
boolean
newInstance
)
{
@Override
public
void
start
(
@Nonnull
Job
project
,
boolean
newInstance
)
{
super
.
start
(
project
,
newInstance
);
SecurityContext
orig
=
ACL
.
impersonate
(
ACL
.
SYSTEM
);
try
{
...
...
test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java
浏览文件 @
339dd4ac
...
...
@@ -39,6 +39,8 @@ import hudson.security.ProjectMatrixAuthorizationStrategy;
import
hudson.tasks.BuildTrigger
;
import
hudson.tasks.BuildTriggerTest
;
import
hudson.triggers.Trigger
;
import
java.io.IOException
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.HashMap
;
...
...
@@ -48,9 +50,16 @@ import java.util.Set;
import
jenkins.model.Jenkins
;
import
jenkins.security.QueueItemAuthenticatorConfiguration
;
import
org.acegisecurity.Authentication
;
import
static
org
.
hamcrest
.
Matchers
.
hasSize
;
import
static
org
.
hamcrest
.
core
.
IsNot
.
not
;
import
static
org
.
hamcrest
.
core
.
IsNull
.
nullValue
;
import
static
org
.
junit
.
Assert
.*;
import
org.hamcrest.core.IsNull
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.jvnet.hudson.test.Issue
;
import
org.jvnet.hudson.test.JenkinsRule
;
import
org.jvnet.hudson.test.MockQueueItemAuthenticator
;
...
...
@@ -148,4 +157,30 @@ public class ReverseBuildTriggerTest {
assertEquals
(
new
Cause
.
UpstreamCause
((
Run
)
b
),
downstream
.
getLastBuild
().
getCause
(
Cause
.
UpstreamCause
.
class
));
}
@Issue
(
"JENKINS-29876"
)
@Test
public
void
nullJobInTriggerNotCausesNPE
()
throws
Exception
{
final
FreeStyleProject
upstreamJob
=
r
.
createFreeStyleProject
(
"upstream"
);
//job with trigger.job == null
final
FreeStyleProject
downstreamJob1
=
r
.
createFreeStyleProject
(
"downstream1"
);
final
ReverseBuildTrigger
reverseBuildTrigger
=
new
ReverseBuildTrigger
(
"upstream"
,
Result
.
SUCCESS
);
downstreamJob1
.
addTrigger
(
reverseBuildTrigger
);
downstreamJob1
.
save
();
//job with trigger.job != null
final
FreeStyleProject
downstreamJob2
=
r
.
createFreeStyleProject
(
"downstream2"
);
final
ReverseBuildTrigger
reverseBuildTrigger2
=
new
ReverseBuildTrigger
(
"upstream"
,
Result
.
SUCCESS
);
downstreamJob2
.
addTrigger
(
reverseBuildTrigger2
);
downstreamJob2
.
save
();
r
.
configRoundtrip
(
downstreamJob2
);
r
.
jenkins
.
rebuildDependencyGraph
();
final
FreeStyleBuild
build
=
upstreamJob
.
scheduleBuild2
(
0
).
get
();
r
.
waitUntilNoActivity
();
r
.
assertLogNotContains
(
"java.lang.NullPointerException"
,
build
);
assertThat
(
"Build should be not triggered"
,
downstreamJob1
.
getBuilds
(),
hasSize
(
0
));
assertThat
(
"Build should be triggered"
,
downstreamJob2
.
getBuilds
(),
not
(
hasSize
(
0
)));
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录