37 lines
1.5 KiB
Go
37 lines
1.5 KiB
Go
package diagnostics
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestValidatePilotDailySnapshotInputUsesNaturalDay(t *testing.T) {
|
|
now := time.Date(2026, 3, 9, 12, 0, 0, 0, time.UTC)
|
|
_, start, end, err := validatePilotDailySnapshotInput(PilotDailySnapshotInput{
|
|
CandidateVersion: "0.55.0-rc.test",
|
|
BuildDigest: "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
LocalDate: "2026-03-08",
|
|
Timezone: "America/New_York",
|
|
Reason: "试点日报归档",
|
|
}, now)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got := end.Sub(start); got != 23*time.Hour {
|
|
t.Fatalf("DST natural day duration=%s, want 23h", got)
|
|
}
|
|
}
|
|
|
|
func TestValidatePilotDailySnapshotInputRejectsInvalidTimezoneAndFutureDate(t *testing.T) {
|
|
now := time.Date(2026, 8, 25, 12, 0, 0, 0, time.UTC)
|
|
for _, input := range []PilotDailySnapshotInput{
|
|
{LocalDate: "2026-08-25", Timezone: "Asia/Shanghai", Reason: "试点日报归档"},
|
|
{CandidateVersion: "0.55.0-rc.test", BuildDigest: "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", LocalDate: "2026-08-25", Timezone: "Mars/Base", Reason: "试点日报归档"},
|
|
{CandidateVersion: "0.55.0-rc.test", BuildDigest: "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", LocalDate: "2026-08-26", Timezone: "Asia/Shanghai", Reason: "试点日报归档"},
|
|
} {
|
|
if _, _, _, err := validatePilotDailySnapshotInput(input, now); err == nil {
|
|
t.Fatalf("expected invalid input: %+v", input)
|
|
}
|
|
}
|
|
}
|