Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
jenkins
提交
a89bcddc
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,发现更多精彩内容 >>
提交
a89bcddc
编写于
12月 23, 2014
作者:
O
Oliver Gondža
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1500 from daniel-beck/JENKINS-25897
[FIXED JENKINS-25897] Add range check for H(X-Y) syntax
上级
546e0cff
b090751c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
3 deletion
+26
-3
core/src/main/grammar/crontab.g
core/src/main/grammar/crontab.g
+1
-1
core/src/main/java/hudson/scheduler/BaseParser.java
core/src/main/java/hudson/scheduler/BaseParser.java
+4
-2
core/src/test/java/hudson/scheduler/CronTabTest.java
core/src/test/java/hudson/scheduler/CronTabTest.java
+21
-0
未找到文件。
core/src/main/grammar/crontab.g
浏览文件 @
a89bcddc
...
...
@@ -110,7 +110,7 @@ throws ANTLRException
}
|
(
"H"
"("
)=>
"H"
"("
s
=
token
"-"
e
=
token
")"
(
"/"
d
=
token
)?
{
bits
=
doHash
(
s
,
e
,
d
);
bits
=
doHash
(
s
,
e
,
d
,
field
);
}
|
"H"
(
"/"
d
=
token
)?
{
...
...
core/src/main/java/hudson/scheduler/BaseParser.java
浏览文件 @
a89bcddc
...
...
@@ -96,10 +96,12 @@ abstract class BaseParser extends LLkParser {
int
u
=
UPPER_BOUNDS
[
field
];
if
(
field
==
2
)
u
=
28
;
// day of month can vary depending on month, so to make life simpler, just use [1,28] that's always safe
if
(
field
==
4
)
u
=
6
;
// Both 0 and 7 of day of week are Sunday. For better distribution, limit upper bound to 6
return
doHash
(
LOWER_BOUNDS
[
field
],
u
,
step
);
return
doHash
(
LOWER_BOUNDS
[
field
],
u
,
step
,
field
);
}
protected
long
doHash
(
int
s
,
int
e
,
int
step
)
throws
ANTLRException
{
protected
long
doHash
(
int
s
,
int
e
,
int
step
,
int
field
)
throws
ANTLRException
{
rangeCheck
(
s
,
field
);
rangeCheck
(
e
,
field
);
if
(
step
>
e
-
s
+
1
)
{
error
(
Messages
.
BaseParser_OutOfRange
(
step
,
1
,
e
-
s
+
1
));
throw
new
AssertionError
();
...
...
core/src/test/java/hudson/scheduler/CronTabTest.java
浏览文件 @
a89bcddc
...
...
@@ -280,4 +280,25 @@ public class CronTabTest {
assertEquals
(
"[35, 56]"
,
times
.
toString
());
}
@Test
public
void
rangeBoundsCheckOK
()
throws
Exception
{
new
CronTab
(
"H(0-59) H(0-23) H(1-31) H(1-12) H(0-7)"
);
}
@Test
public
void
rangeBoundsCheckFailHour
()
throws
Exception
{
try
{
new
CronTab
(
"H H(12-24) * * *"
);
fail
();
}
catch
(
ANTLRException
e
)
{
// ok
}
}
@Test
public
void
rangeBoundsCheckFailMinute
()
throws
Exception
{
try
{
new
CronTab
(
"H(33-66) * * * *"
);
fail
();
}
catch
(
ANTLRException
e
)
{
// ok
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录