From 9daaf8b304c3c3878287683313c3530b0acad4b8 Mon Sep 17 00:00:00 2001 From: upstream Date: Fri, 4 Sep 2026 09:32:17 +0200 Subject: [PATCH] Upstream HangfireIO/Cronos state of the touched files before 7c74681733 --- src/Cronos/CronExpression.cs | 9 -------- .../CronExpressionReverseFacts.cs | 21 ------------------- 2 files changed, 30 deletions(-) diff --git a/src/Cronos/CronExpression.cs b/src/Cronos/CronExpression.cs index 0e7013f..9197940 100644 --- a/src/Cronos/CronExpression.cs +++ b/src/Cronos/CronExpression.cs @@ -995,15 +995,6 @@ namespace Cronos var lastDayOfMonth = CalendarHelper.GetDaysInMonth(year, month); var maxDay = dayLimit > lastDayOfMonth ? lastDayOfMonth : dayLimit; - // Rolling back past the 1st can drop maxDay below the first valid day, - // and the "*" fast path would then underflow into the previous month. - if (maxDay < CronField.DaysOfMonth.First) - { - day = default; - actualDay = default; - return false; - } - if (HasFlag(CronExpressionFlag.NearestWeekday)) { day = HasFlag(CronExpressionFlag.DayOfMonthLast) diff --git a/tests/Cronos.Tests/CronExpressionReverseFacts.cs b/tests/Cronos.Tests/CronExpressionReverseFacts.cs index 940b050..437e9dd 100644 --- a/tests/Cronos.Tests/CronExpressionReverseFacts.cs +++ b/tests/Cronos.Tests/CronExpressionReverseFacts.cs @@ -125,27 +125,6 @@ namespace Cronos.Tests Assert.Equal(GetUtcDateTime(expectedString), previous); } - [Theory] - - // Rolling back past midnight of the 1st must skip to the previous allowed - // month, not land in the preceding disallowed one. - [InlineData("0 17 * 7 *", "2017-07-01 14:00:00", "2016-07-31 17:00:00")] - [InlineData("37-57/3 17-21 * 7 *", "2017-07-01 14:20:00", "2016-07-31 21:55:00")] - [InlineData("0 0 * 3 *", "2020-03-01 00:00:00", "2019-03-31 00:00:00")] - - // Control: an unrestricted month field must still roll back normally. - [InlineData("0 17 * * *", "2017-07-01 14:00:00", "2017-06-30 17:00:00")] - public void GetPreviousOccurrence_DoesNotReturnDayInDisallowedMonth_WhenTimeRollsBackPastFirstOfMonth( - string cronExpression, string fromString, string expectedString) - { - var expression = CronExpression.Parse(cronExpression, CronFormat.Standard); - var from = GetUtcDateTime(fromString); - - var previous = expression.GetPreviousOccurrence(from, inclusive: false); - - Assert.Equal(GetUtcDateTime(expectedString), previous); - } - [Fact] public void GetPreviousOccurrence_ReturnsCorrectDate_WhenMacroExpressionHasJitterSeed() {