Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
jenkins
提交
cd241674
J
jenkins
项目概览
xxadev
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
提交
cd241674
编写于
7月 27, 2016
作者:
J
Jesse Glick
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[JENKINS-29922] Correct the default value handling of ArtifactArchiver.excludes.
上级
a8ee5752
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
29 addition
and
19 deletion
+29
-19
core/src/main/java/hudson/tasks/ArtifactArchiver.java
core/src/main/java/hudson/tasks/ArtifactArchiver.java
+4
-3
test/pom.xml
test/pom.xml
+6
-0
test/src/test/java/hudson/tasks/ArtifactArchiverTest.java
test/src/test/java/hudson/tasks/ArtifactArchiverTest.java
+19
-16
未找到文件。
core/src/main/java/hudson/tasks/ArtifactArchiver.java
浏览文件 @
cd241674
...
...
@@ -50,6 +50,7 @@ import java.util.HashMap;
import
java.util.Map
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
javax.annotation.CheckForNull
;
import
net.sf.json.JSONObject
;
import
javax.annotation.Nonnull
;
...
...
@@ -76,7 +77,7 @@ public class ArtifactArchiver extends Recorder implements SimpleBuildStep {
/**
* Possibly null 'excludes' pattern as in Ant.
*/
private
String
excludes
=
""
;
private
String
excludes
;
@Deprecated
private
Boolean
latestOnly
;
...
...
@@ -154,11 +155,11 @@ public class ArtifactArchiver extends Recorder implements SimpleBuildStep {
return
artifacts
;
}
public
String
getExcludes
()
{
public
@CheckForNull
String
getExcludes
()
{
return
excludes
;
}
@DataBoundSetter
public
final
void
setExcludes
(
String
excludes
)
{
@DataBoundSetter
public
final
void
setExcludes
(
@CheckForNull
String
excludes
)
{
this
.
excludes
=
Util
.
fixEmptyAndTrim
(
excludes
);
}
...
...
test/pom.xml
浏览文件 @
cd241674
...
...
@@ -132,6 +132,12 @@ THE SOFTWARE.
<version>
1.2-beta-4
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.jenkins-ci.plugins
</groupId>
<artifactId>
structs
</artifactId>
<version>
1.2
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.jvnet.mock-javamail
</groupId>
<artifactId>
mock-javamail
</artifactId>
...
...
test/src/test/java/hudson/tasks/ArtifactArchiverTest.java
浏览文件 @
cd241674
...
...
@@ -27,8 +27,8 @@ package hudson.tasks;
import
hudson.AbortException
;
import
hudson.FilePath
;
import
hudson.Launcher
;
import
hudson.Util
;
import
hudson.model.AbstractBuild
;
import
hudson.model.AbstractProject
;
import
hudson.model.BuildListener
;
import
hudson.model.FreeStyleBuild
;
import
hudson.model.FreeStyleProject
;
...
...
@@ -40,6 +40,7 @@ import java.net.HttpURLConnection;
import
java.util.Collections
;
import
java.util.List
;
import
jenkins.util.VirtualFile
;
import
org.jenkinsci.plugins.structs.describable.DescribableModel
;
import
static
org
.
junit
.
Assert
.*;
import
static
org
.
junit
.
Assume
.*;
...
...
@@ -155,19 +156,7 @@ public class ArtifactArchiverTest {
assertFalse
(
kids
[
0
].
exists
());
j
.
createWebClient
().
assertFails
(
b
.
getUrl
()
+
"artifact/hack"
,
HttpURLConnection
.
HTTP_NOT_FOUND
);
}
private
void
runNewBuildAndStartUnitlIsCreated
(
AbstractProject
project
)
throws
InterruptedException
{
int
buildNumber
=
project
.
getNextBuildNumber
();
project
.
scheduleBuild2
(
0
);
int
count
=
0
;
while
(
project
.
getBuildByNumber
(
buildNumber
)==
null
&&
count
<
50
){
Thread
.
sleep
(
100
);
count
++;
}
if
(
project
.
getBuildByNumber
(
buildNumber
)==
null
)
fail
(
"Build "
+
buildNumber
+
" did not created."
);
}
static
class
CreateArtifact
extends
TestBuilder
{
public
boolean
perform
(
AbstractBuild
<?,?>
build
,
Launcher
launcher
,
BuildListener
listener
)
throws
IOException
,
InterruptedException
{
build
.
getWorkspace
().
child
(
"f"
).
write
(
"content"
,
"UTF-8"
);
...
...
@@ -197,8 +186,22 @@ public class ArtifactArchiverTest {
assertFalse
(
project
.
getBuildByNumber
(
2
).
getHasArtifacts
());
}
@Issue
(
"JENKINS-29922"
)
@Test
public
void
configRoundTrip
()
throws
Exception
{
ArtifactArchiver
aa
=
new
ArtifactArchiver
(
"*.txt"
);
assertNull
(
Util
.
fixEmpty
(
aa
.
getExcludes
()));
// null and "" behave the same, we do not care which it is
assertEquals
(
"{artifacts=*.txt}"
,
DescribableModel
.
uninstantiate_
(
aa
).
toString
());
// but we do care that excludes is considered to be at the default
aa
=
j
.
configRoundtrip
(
aa
);
assertEquals
(
"*.txt"
,
aa
.
getArtifacts
());
assertNull
(
Util
.
fixEmpty
(
aa
.
getExcludes
()));
assertEquals
(
"{artifacts=*.txt}"
,
DescribableModel
.
uninstantiate_
(
aa
).
toString
());
aa
.
setExcludes
(
"README.txt"
);
aa
=
j
.
configRoundtrip
(
aa
);
assertEquals
(
"*.txt"
,
aa
.
getArtifacts
());
assertEquals
(
"README.txt"
,
aa
.
getExcludes
());
assertEquals
(
"{artifacts=*.txt, excludes=README.txt}"
,
DescribableModel
.
uninstantiate_
(
aa
).
toString
());
// TreeMap, so attributes will be sorted
}
static
class
CreateDefaultExcludesArtifact
extends
TestBuilder
{
public
boolean
perform
(
AbstractBuild
<?,?>
build
,
Launcher
launcher
,
BuildListener
listener
)
throws
IOException
,
InterruptedException
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录