Skip to content

Commit dcc2eb6

Browse files
committed
test(scheduler): document that minutes are required in time format
"every day at 12" is misparsed by english-to-cron library. Must use "at 12:00" format instead.
1 parent 258749f commit dcc2eb6

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -267,15 +267,17 @@ Full form:
267267

268268
**Schedule**: Cron or English phrase
269269

270-
- Cron: `min hour day month weekday` (e.g., `*/5 * * * *` = every 5 minutes)
270+
- Cron: `min hour day month weekday` (e.g., `*/5 * * * *`)
271271
- English examples:
272272
- `every 5 minutes`
273273
- `every day at 16:00`
274274
- `7pm every Thursday`
275-
- `Sunday at 12:00`
276-
- `midnight on Tuesdays`
277-
- 24-hour format preferred
278-
- 12-hour edge case: `12 am` = midnight (00:00), `12 pm` = noon (12:00)
275+
- `noon` / `midnight`
276+
277+
Notes:
278+
- Minutes required: `at 12:00` works, `at 12` does not
279+
- `every day` is optional: `noon` = `noon every day`
280+
- Avoid `12 am`/`12 pm`: use `noon`/`midnight` or `0:00`/`12:00`
279281

280282
### Environment variable priority
281283

src/actor/job/tick.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,30 @@ mod tests {
186186
assert_eq!(next, Utc.with_ymd_and_hms(2025, 1, 15, 16, 0, 0).unwrap());
187187
}
188188

189+
#[test]
190+
fn english_24h_requires_minutes() {
191+
// "every day at 12" is NOT supported - library misparses it
192+
let bad = english_to_cron::str_cron_syntax("every day at 12").unwrap();
193+
assert_eq!(bad, "0 0 0 */1 * ? *"); // wrong!
194+
195+
// Must use "12:00" format
196+
let good = english_to_cron::str_cron_syntax("every day at 12:00").unwrap();
197+
assert_eq!(good, "0 0 12 */1 * ? *");
198+
}
199+
200+
#[test]
201+
fn english_noon_and_midnight() {
202+
// "every day" is optional
203+
assert_eq!(
204+
english_to_cron::str_cron_syntax("noon").unwrap(),
205+
english_to_cron::str_cron_syntax("noon every day").unwrap()
206+
);
207+
assert_eq!(
208+
english_to_cron::str_cron_syntax("midnight").unwrap(),
209+
english_to_cron::str_cron_syntax("midnight every day").unwrap()
210+
);
211+
}
212+
189213
#[test]
190214
fn english_7pm_every_thursday() {
191215
let schedule = parse_schedule("7pm every Thursday");

0 commit comments

Comments
 (0)