Skip to content

Commit

Permalink
Merge pull request #46 from ridwanakf/bugfix/removeByCondition
Browse files Browse the repository at this point in the history
Fix removeByCondition get "slice bounds out of range"
  • Loading branch information
Streppel authored Jul 14, 2020
2 parents 4cc1bfb + e5c1592 commit 5af127a
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
8 changes: 5 additions & 3 deletions scheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,11 +213,13 @@ func (s *Scheduler) RemoveByReference(j *Job) {
}

func (s *Scheduler) removeByCondition(shouldRemove func(*Job) bool) {
for i, job := range s.jobs {
if shouldRemove(job) {
s.jobs = removeAtIndex(s.jobs, i)
retainedJobs := make([]*Job, 0)
for _, job := range s.jobs {
if !shouldRemove(job) {
retainedJobs = append(retainedJobs, job)
}
}
s.jobs = retainedJobs
}

// RemoveJobByTag will Remove Jobs by Tag
Expand Down
5 changes: 3 additions & 2 deletions scheduler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -369,11 +369,12 @@ func TestRemove(t *testing.T) {
scheduler := NewScheduler(time.UTC)
scheduler.Every(1).Minute().Do(task)
scheduler.Every(1).Minute().Do(taskWithParams, 1, "hello")
scheduler.Every(1).Minute().Do(task)

assert.Equal(t, 2, scheduler.Len(), "Incorrect number of jobs")
assert.Equal(t, 3, scheduler.Len(), "Incorrect number of jobs")

scheduler.Remove(task)
assert.Equal(t, 1, scheduler.Len(), "Incorrect number of jobs after removing 1 job")
assert.Equal(t, 1, scheduler.Len(), "Incorrect number of jobs after removing 2 job")

scheduler.Remove(task)
assert.Equal(t, 1, scheduler.Len(), "Incorrect number of jobs after removing non-existent job")
Expand Down

0 comments on commit 5af127a

Please sign in to comment.