Skip to content

Commit bf8ad84

Browse files
authored
Merge pull request #399 from pangyikhei/396-invalid-cron
Quartz cron expressions should allow overflowing ranges
2 parents f68dca8 + 3f039ef commit bf8ad84

2 files changed

Lines changed: 19 additions & 4 deletions

File tree

src/main/java/com/cronutils/model/definition/CronDefinitionBuilder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,10 @@ private static CronDefinition cron4j() {
258258
*/
259259
private static CronDefinition quartz() {
260260
return CronDefinitionBuilder.defineCron()
261-
.withSeconds().withStrictRange().and()
262-
.withMinutes().withStrictRange().and()
263-
.withHours().withStrictRange().and()
264-
.withDayOfMonth().withValidRange(1, 32).supportsL().supportsW().supportsLW().supportsQuestionMark().withStrictRange().and()
261+
.withSeconds().and()
262+
.withMinutes().and()
263+
.withHours().and()
264+
.withDayOfMonth().withValidRange(1, 32).supportsL().supportsW().supportsLW().supportsQuestionMark().and()
265265
.withMonth().withValidRange(1, 13).and()
266266
.withDayOfWeek().withValidRange(1, 7).withMondayDoWValue(2).supportsHash().supportsL().supportsQuestionMark().and()
267267
.withYear().withValidRange(1970, 2099).withStrictRange().optional().and()

src/test/java/com/cronutils/validator/CronValidatorQuartzIntegrationTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,19 @@ public void testQuestionMarkSupport() {
8585
parser.parse("0 0 12 ? * FRI-SAT");
8686
parser.parse("0 0 12 ? * SAT-SUN");
8787
}
88+
89+
/**
90+
* Issue #396: overflow ranges
91+
* Quartz cron expressions should support overflowing ranges
92+
* See https://github.com/quartz-scheduler/quartz/blob/master/quartz-core/src/main/java/org/quartz/CronExpression.java
93+
*/
94+
@Test
95+
public void testOverflowRange() {
96+
parser.parse("20-10 0 0 ? * 3"); // second overflow
97+
parser.parse("0 40-20 0 ? * 3"); // minute overflow
98+
parser.parse("0 0 12-2 ? * 3"); // hour overflow
99+
parser.parse("0 0 0 24-7 * ?"); // day of month overflow
100+
parser.parse("0 0 0 ? 10-3 3"); // month overflow
101+
parser.parse("0 0 0 ? * 5-1"); // day of week overflow
102+
}
88103
}

0 commit comments

Comments
 (0)