diff --git a/errors.go b/errors.go index 12d85eb5..e2801244 100644 --- a/errors.go +++ b/errors.go @@ -9,6 +9,7 @@ var ( ErrDailyJobAtTimesNil = fmt.Errorf("gocron: DailyJob: atTimes must not be nil") ErrDailyJobHours = fmt.Errorf("gocron: DailyJob: atTimes hours must be between 0 and 23 inclusive") ErrDailyJobMinutesSeconds = fmt.Errorf("gocron: DailyJob: atTimes minutes and seconds must be between 0 and 59 inclusive") + ErrDurationJobIntervalZero = fmt.Errorf("gocron: DurationJob: time interval is 0") ErrDurationRandomJobMinMax = fmt.Errorf("gocron: DurationRandomJob: minimum duration must be less than maximum duration") ErrEventListenerFuncNil = fmt.Errorf("gocron: eventListenerFunc must not be nil") ErrJobNotFound = fmt.Errorf("gocron: job not found") diff --git a/job.go b/job.go index 3dd2a1cd..59e532a0 100644 --- a/job.go +++ b/job.go @@ -148,6 +148,9 @@ type durationJobDefinition struct { } func (d durationJobDefinition) setup(j *internalJob, _ *time.Location) error { + if d.duration == 0 { + return ErrDurationJobIntervalZero + } j.jobSchedule = &durationJob{duration: d.duration} return nil } diff --git a/scheduler_test.go b/scheduler_test.go index a380ac64..ed037261 100644 --- a/scheduler_test.go +++ b/scheduler_test.go @@ -478,6 +478,12 @@ func TestScheduler_NewJobErrors(t *testing.T) { nil, ErrCronJobParse, }, + { + "duration job time interval is zero", + DurationJob(0 * time.Second), + nil, + ErrDurationJobIntervalZero, + }, { "random with bad min/max", DurationRandomJob(