From dbec16d566ed7ac8a946e0d832d2a52d2d559f91 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Fri, 24 Jul 2020 12:24:59 +0200 Subject: [PATCH] Add test for Friday 13th crontab failure Added test for Friday 13th trigger, i.e. an uncommon crontab expression. With the new CronExpression in place, this failure does not occur anymore. Closes gh-21574 --- .../support/CronExpressionTests.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/spring-context/src/test/java/org/springframework/scheduling/support/CronExpressionTests.java b/spring-context/src/test/java/org/springframework/scheduling/support/CronExpressionTests.java index b55c3b7fd0f..0e6fd690765 100644 --- a/spring-context/src/test/java/org/springframework/scheduling/support/CronExpressionTests.java +++ b/spring-context/src/test/java/org/springframework/scheduling/support/CronExpressionTests.java @@ -25,6 +25,7 @@ import java.time.ZonedDateTime; import org.junit.jupiter.api.Test; +import static java.time.DayOfWeek.FRIDAY; import static java.time.DayOfWeek.MONDAY; import static java.time.DayOfWeek.TUESDAY; import static java.time.DayOfWeek.WEDNESDAY; @@ -444,4 +445,21 @@ class CronExpressionTests { assertThat(actual.getDayOfWeek()).isEqualTo(WEDNESDAY); } + @Test + void friday13th() { + CronExpression expression = CronExpression.parse("0 0 0 13 * FRI"); + + LocalDateTime last = LocalDateTime.of(2018, 7, 31, 11, 47, 14); + LocalDateTime actual = expression.next(last); + assertThat(actual).isNotNull(); + assertThat(actual.getDayOfWeek()).isEqualTo(FRIDAY); + assertThat(actual.getDayOfMonth()).isEqualTo(13); + + last = actual; + actual = expression.next(last); + assertThat(actual).isNotNull(); + assertThat(actual.getDayOfWeek()).isEqualTo(FRIDAY); + assertThat(actual.getDayOfMonth()).isEqualTo(13); + } + }