Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
fcedf647
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,发现更多精彩内容 >>
未验证
提交
fcedf647
编写于
12月 08, 2017
作者:
J
Jesse Glick
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
PeepholePermalinkTest
上级
7bcb30cb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
99 addition
and
100 deletion
+99
-100
test/src/test/groovy/jenkins/model/PeepholePermalinkTest.groovy
...rc/test/groovy/jenkins/model/PeepholePermalinkTest.groovy
+0
-100
test/src/test/java/jenkins/model/PeepholePermalinkTest.java
test/src/test/java/jenkins/model/PeepholePermalinkTest.java
+99
-0
未找到文件。
test/src/test/groovy/jenkins/model/PeepholePermalinkTest.groovy
已删除
100644 → 0
浏览文件 @
7bcb30cb
package
jenkins.model
import
static
org
.
junit
.
Assert
.
assertTrue
import
org.junit.Assume
;
import
hudson.Functions
import
hudson.Util
import
hudson.model.Run
import
org.junit.Rule
import
org.junit.Test
import
org.jvnet.hudson.test.FailureBuilder
import
org.jvnet.hudson.test.Issue
import
org.jvnet.hudson.test.JenkinsRule
/**
* @author Kohsuke Kawaguchi
*/
class
PeepholePermalinkTest
{
@Rule
public
JenkinsRule
j
=
new
JenkinsRule
()
/**
* Basic operation of the permalink generation.
*/
@Test
void
basics
()
{
Assume
.
assumeFalse
(
"can't run on windows because we rely on symlinks"
,
Functions
.
isWindows
());
def
p
=
j
.
createFreeStyleProject
()
def
b1
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
))
def
lsb
=
new
File
(
p
.
buildDir
,
"lastSuccessfulBuild"
)
def
lfb
=
new
File
(
p
.
buildDir
,
"lastFailedBuild"
)
assertLink
(
lsb
,
b1
)
// now another build that fails
p
.
buildersList
.
add
(
new
FailureBuilder
())
def
b2
=
p
.
scheduleBuild2
(
0
).
get
()
assertLink
(
lsb
,
b1
)
assertLink
(
lfb
,
b2
)
// one more build and this time it succeeds
p
.
buildersList
.
clear
()
def
b3
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
))
assertLink
(
lsb
,
b3
)
assertLink
(
lfb
,
b2
)
// delete b3 and symlinks should update properly
b3
.
delete
()
assertLink
(
lsb
,
b1
)
assertLink
(
lfb
,
b2
)
b1
.
delete
()
assertLink
(
lsb
,
null
)
assertLink
(
lfb
,
b2
)
b2
.
delete
()
assertLink
(
lsb
,
null
)
assertLink
(
lfb
,
null
)
}
def
assertLink
(
File
symlink
,
Run
build
)
{
assert
Util
.
resolveSymlink
(
symlink
)==(
build
==
null
?
"-1"
:
build
.
number
as
String
);
}
/**
* job/JOBNAME/lastStable and job/JOBNAME/lastSuccessful symlinks that we used to generate should still work
*/
@Test
void
legacyCompatibility
()
{
Assume
.
assumeFalse
(
"can't run on windows because we rely on symlinks"
,
Functions
.
isWindows
());
def
p
=
j
.
createFreeStyleProject
()
def
b1
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
))
[
"lastStable"
,
"lastSuccessful"
].
each
{
n
->
// test if they both point to b1
assert
new
File
(
p
.
rootDir
,
"$n/build.xml"
).
length
()
==
new
File
(
b1
.
rootDir
,
"build.xml"
).
length
()
}
}
@Test
@Issue
(
"JENKINS-19034"
)
void
rebuildBuildNumberPermalinks
()
{
def
p
=
j
.
createFreeStyleProject
()
def
b
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
))
File
f
=
new
File
(
p
.
getBuildDir
(),
"1"
)
// assertTrue(Util.isSymlink(f))
f
.
delete
()
PeepholePermalink
link
=
p
.
getPermalinks
().
find
({
l
->
l
instanceof
PeepholePermalink
})
println
(
link
)
link
.
updateCache
(
p
,
b
)
assertTrue
(
"build symlink hasn't been restored"
,
f
.
exists
())
}
}
test/src/test/java/jenkins/model/PeepholePermalinkTest.java
0 → 100644
浏览文件 @
fcedf647
package
jenkins.model
;
import
hudson.Functions
;
import
hudson.Util
;
import
hudson.model.FreeStyleBuild
;
import
hudson.model.FreeStyleProject
;
import
hudson.model.Run
;
import
java.io.File
;
import
static
org
.
junit
.
Assert
.*;
import
org.junit.Assume
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.jvnet.hudson.test.FailureBuilder
;
import
org.jvnet.hudson.test.Issue
;
import
org.jvnet.hudson.test.JenkinsRule
;
public
class
PeepholePermalinkTest
{
@Rule
public
JenkinsRule
j
=
new
JenkinsRule
();
/**
* Basic operation of the permalink generation.
*/
@Test
public
void
basics
()
throws
Exception
{
Assume
.
assumeFalse
(
"can't run on windows because we rely on symlinks"
,
Functions
.
isWindows
());
FreeStyleProject
p
=
j
.
createFreeStyleProject
();
FreeStyleBuild
b1
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
));
File
lsb
=
new
File
(
p
.
getBuildDir
(),
"lastSuccessfulBuild"
);
File
lfb
=
new
File
(
p
.
getBuildDir
(),
"lastFailedBuild"
);
assertLink
(
lsb
,
b1
);
// now another build that fails
p
.
getBuildersList
().
add
(
new
FailureBuilder
());
FreeStyleBuild
b2
=
p
.
scheduleBuild2
(
0
).
get
();
assertLink
(
lsb
,
b1
);
assertLink
(
lfb
,
b2
);
// one more build and this time it succeeds
p
.
getBuildersList
().
clear
();
FreeStyleBuild
b3
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
));
assertLink
(
lsb
,
b3
);
assertLink
(
lfb
,
b2
);
// delete b3 and symlinks should update properly
b3
.
delete
();
assertLink
(
lsb
,
b1
);
assertLink
(
lfb
,
b2
);
b1
.
delete
();
assertLink
(
lsb
,
null
);
assertLink
(
lfb
,
b2
);
b2
.
delete
();
assertLink
(
lsb
,
null
);
assertLink
(
lfb
,
null
);
}
private
void
assertLink
(
File
symlink
,
Run
build
)
throws
Exception
{
assertEquals
(
build
==
null
?
"-1"
:
Integer
.
toString
(
build
.
getNumber
()),
Util
.
resolveSymlink
(
symlink
));
}
/**
* job/JOBNAME/lastStable and job/JOBNAME/lastSuccessful symlinks that we
* used to generate should still work
*/
@Test
public
void
legacyCompatibility
()
throws
Exception
{
Assume
.
assumeFalse
(
"can't run on windows because we rely on symlinks"
,
Functions
.
isWindows
());
FreeStyleProject
p
=
j
.
createFreeStyleProject
();
FreeStyleBuild
b1
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
));
for
(
String
n
:
new
String
[]
{
"lastStable"
,
"lastSuccessful"
})
{
// test if they both point to b1
assertEquals
(
new
File
(
p
.
getRootDir
(),
n
+
"/build.xml"
).
length
(),
new
File
(
b1
.
getRootDir
(),
"build.xml"
).
length
());
}
}
@Test
@Issue
(
"JENKINS-19034"
)
public
void
rebuildBuildNumberPermalinks
()
throws
Exception
{
FreeStyleProject
p
=
j
.
createFreeStyleProject
();
FreeStyleBuild
b
=
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
));
File
f
=
new
File
(
p
.
getBuildDir
(),
"1"
);
// assertTrue(Util.isSymlink(f))
f
.
delete
();
PeepholePermalink
link
=
(
PeepholePermalink
)
p
.
getPermalinks
().
stream
().
filter
(
l
->
l
instanceof
PeepholePermalink
).
findAny
().
get
();
link
.
updateCache
(
p
,
b
);
assertTrue
(
"build symlink hasn't been restored"
,
f
.
exists
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录