55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package core
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestNextRunTimeSupportsEvery(t *testing.T) {
|
|
from := time.Date(2026, 6, 14, 12, 0, 0, 0, time.UTC)
|
|
next, ok := nextRunTime("@every 10s", from)
|
|
if !ok {
|
|
t.Fatal("expected @every schedule to parse")
|
|
}
|
|
if want := from.Add(10 * time.Second); !next.Equal(want) {
|
|
t.Fatalf("expected %s, got %s", want, next)
|
|
}
|
|
}
|
|
|
|
func TestNextRunTimeSupportsCron(t *testing.T) {
|
|
from := time.Date(2026, 6, 14, 12, 3, 0, 0, time.UTC)
|
|
next, ok := nextRunTime("*/5 * * * *", from)
|
|
if !ok {
|
|
t.Fatal("expected cron schedule to parse")
|
|
}
|
|
want := time.Date(2026, 6, 14, 12, 5, 0, 0, time.UTC)
|
|
if !next.Equal(want) {
|
|
t.Fatalf("expected %s, got %s", want, next)
|
|
}
|
|
}
|
|
|
|
func TestRunningOutputIncludesInvocation(t *testing.T) {
|
|
started := time.Date(2026, 6, 17, 23, 40, 0, 0, time.Local)
|
|
job := Job{
|
|
Name: "Backup",
|
|
Command: `C:\Program Files\FreeFileSync\FreeFileSync.exe`,
|
|
Arguments: `D:\Local\Jobs\Auto.ffs_batch`,
|
|
SuccessExitCodes: "0,1",
|
|
}
|
|
|
|
output := runningOutput(job, "Manual", started)
|
|
for _, want := range []string{
|
|
"Running since 2026-06-17 23:40:00",
|
|
"Manual",
|
|
job.Command,
|
|
job.Arguments,
|
|
"0,1",
|
|
"start_only",
|
|
} {
|
|
if !strings.Contains(output, want) {
|
|
t.Fatalf("expected running output to contain %q, got:\n%s", want, output)
|
|
}
|
|
}
|
|
}
|