mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
Normalize cron schedules on routine create (#1648)
* Fix REPL single-message hang and cap CI test duration * Fix Clippy nested-if lint in REPL startup * Fix single-message approval flow * Handle empty single-message REPL exits * Wait for one-shot event routines before exit * Fix MCP lifecycle trace user scope * Normalize cron schedules on routine create
This commit is contained in:
@@ -915,7 +915,7 @@ fn parse_routine_create_request(
|
||||
fn build_routine_trigger(trigger: &NormalizedTriggerRequest) -> Trigger {
|
||||
match trigger {
|
||||
NormalizedTriggerRequest::Cron { schedule, timezone } => Trigger::Cron {
|
||||
schedule: schedule.clone(),
|
||||
schedule: normalize_cron_expression(schedule),
|
||||
timezone: timezone.clone(),
|
||||
},
|
||||
NormalizedTriggerRequest::Manual => Trigger::Manual,
|
||||
@@ -1836,6 +1836,20 @@ mod tests {
|
||||
assert_eq!(parsed.cooldown_secs, 30);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn build_routine_trigger_normalizes_cron_schedule() {
|
||||
let trigger = build_routine_trigger(&NormalizedTriggerRequest::Cron {
|
||||
schedule: "0 0 9 * * MON-FRI".to_string(),
|
||||
timezone: Some("UTC".to_string()),
|
||||
});
|
||||
|
||||
assert!(matches!(
|
||||
trigger,
|
||||
Trigger::Cron { schedule, timezone }
|
||||
if schedule == "0 0 9 * * MON-FRI *" && timezone.as_deref() == Some("UTC")
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_grouped_message_event_with_tools() {
|
||||
let params = serde_json::json!({
|
||||
|
||||
@@ -439,7 +439,7 @@ mod tests {
|
||||
|
||||
match &routine.trigger {
|
||||
Trigger::Cron { schedule, timezone } => {
|
||||
assert_eq!(schedule, "0 0 9 * * MON-FRI");
|
||||
assert_eq!(schedule, "0 0 9 * * MON-FRI *");
|
||||
assert_eq!(timezone.as_deref(), Some("UTC"));
|
||||
}
|
||||
other => panic!("expected cron trigger, got {other:?}"),
|
||||
|
||||
Reference in New Issue
Block a user