gitea源码

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package cron
  4. import (
  5. "sort"
  6. "strconv"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestAddTaskToScheduler(t *testing.T) {
  11. assert.Empty(t, scheduler.Jobs())
  12. defer scheduler.Clear()
  13. // no seconds
  14. err := addTaskToScheduler(&Task{
  15. Name: "task 1",
  16. config: &BaseConfig{
  17. Schedule: "5 4 * * *",
  18. },
  19. })
  20. assert.NoError(t, err)
  21. jobs := scheduler.Jobs()
  22. assert.Len(t, jobs, 1)
  23. assert.Equal(t, "task 1", jobs[0].Tags()[0])
  24. assert.Equal(t, "5 4 * * *", jobs[0].Tags()[1])
  25. // with seconds
  26. err = addTaskToScheduler(&Task{
  27. Name: "task 2",
  28. config: &BaseConfig{
  29. Schedule: "30 5 4 * * *",
  30. },
  31. })
  32. assert.NoError(t, err)
  33. jobs = scheduler.Jobs() // the item order is not guaranteed, so we need to sort it before "assert"
  34. sort.Slice(jobs, func(i, j int) bool {
  35. return jobs[i].Tags()[0] < jobs[j].Tags()[0]
  36. })
  37. assert.Len(t, jobs, 2)
  38. assert.Equal(t, "task 2", jobs[1].Tags()[0])
  39. assert.Equal(t, "30 5 4 * * *", jobs[1].Tags()[1])
  40. }
  41. func TestScheduleHasSeconds(t *testing.T) {
  42. tests := []struct {
  43. schedule string
  44. hasSecond bool
  45. }{
  46. {"* * * * * *", true},
  47. {"* * * * *", false},
  48. {"5 4 * * *", false},
  49. {"5 4 * * *", false},
  50. {"5,8 4 * * *", false},
  51. {"* * * * * *", true},
  52. {"5,8 4 * * *", false},
  53. }
  54. for i, test := range tests {
  55. t.Run(strconv.Itoa(i), func(t *testing.T) {
  56. assert.Equal(t, test.hasSecond, scheduleHasSeconds(test.schedule))
  57. })
  58. }
  59. }