Files
gitea/services/cron/tasks_test.go
T
silverwind 8abda62312 test: consolidate Go tests (#39962)
Consolidate all Go tests. Coverage is identical to before. Go tests are
around 5% faster while being 7% smaller. No non-test code is touched.
2026-10-24 13:48:19 +00:00

64 lines
1.4 KiB
Go

// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package cron
import (
"sort"
"strconv"
"testing"
"github.com/stretchr/testify/assert"
)
func TestAddTaskToScheduler(t *testing.T) {
assert.Empty(t, scheduler.Jobs())
defer func() {
for _, j := range scheduler.Jobs() {
_ = scheduler.RemoveJob(j.ID())
}
}()
for i, task := range []struct {
name, schedule string
}{
{"task 1", "5 4 * * *"}, // no seconds
{"task 2", "30 5 4 * * *"}, // with seconds
} {
assert.NoError(t, addTaskToScheduler(&Task{
Name: task.name,
config: &BaseConfig{Schedule: task.schedule},
}))
jobs := scheduler.Jobs()
if i > 0 {
// the item order is not guaranteed, so we need to sort it before "assert"
sort.Slice(jobs, func(i, j int) bool {
return jobs[i].Tags()[0] < jobs[j].Tags()[0]
})
}
assert.Len(t, jobs, i+1)
assert.Equal(t, task.name, jobs[i].Tags()[0])
assert.Equal(t, task.schedule, jobs[i].Tags()[1])
}
}
func TestScheduleHasSeconds(t *testing.T) {
tests := []struct {
schedule string
hasSecond bool
}{
{"* * * * * *", true},
{"* * * * *", false},
{"5 4 * * *", false},
{"5,8 4 * * *", false},
{"* * * * * *", true},
{"5,8 4 * * *", false},
}
for i, test := range tests {
t.Run(strconv.Itoa(i), func(t *testing.T) {
assert.Equal(t, test.hasSecond, scheduleHasSeconds(test.schedule))
})
}
}