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) } } }