51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
package manifest
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRunManifestStageMarkHelpers(t *testing.T) {
|
|
rm := NewRun("2026-05-03", "forsaken", "20260517T000000Z-abcdef12", false, []string{"prepare"}, time.Date(2026, 5, 3, 10, 0, 0, 0, time.UTC))
|
|
if rm.Status != RunManifestStatusRunning {
|
|
t.Fatalf("status = %q, want %q", rm.Status, RunManifestStatusRunning)
|
|
}
|
|
|
|
runningAt := time.Date(2026, 5, 3, 10, 1, 0, 0, time.UTC)
|
|
rm.SetStageAction("prepare", RunStageActionRun, runningAt)
|
|
rm.MarkStageRunning("prepare", runningAt)
|
|
rm.MarkStageSucceeded("prepare", runningAt.Add(30*time.Second), []ArtifactRecord{
|
|
{Kind: "input", LocalPath: "inputs/session.yml"},
|
|
})
|
|
|
|
stage := rm.Stages["prepare"]
|
|
if stage == nil {
|
|
t.Fatal("prepare stage missing")
|
|
}
|
|
if stage.Action != RunStageActionRun {
|
|
t.Fatalf("action = %q, want %q", stage.Action, RunStageActionRun)
|
|
}
|
|
if stage.Status != StatusSucceeded {
|
|
t.Fatalf("status = %q, want %q", stage.Status, StatusSucceeded)
|
|
}
|
|
|
|
skippedAt := runningAt.Add(1 * time.Minute)
|
|
rm.SetStageAction("notify", RunStageActionSkip, skippedAt)
|
|
rm.MarkStageSkipped("notify", skippedAt, "already_succeeded")
|
|
skipped := rm.Stages["notify"]
|
|
if skipped == nil {
|
|
t.Fatal("notify stage missing")
|
|
}
|
|
if skipped.Action != RunStageActionSkip {
|
|
t.Fatalf("action = %q, want %q", skipped.Action, RunStageActionSkip)
|
|
}
|
|
if skipped.Status != StatusSkipped {
|
|
t.Fatalf("status = %q, want %q", skipped.Status, StatusSkipped)
|
|
}
|
|
|
|
rm.MarkSucceeded(skippedAt.Add(10 * time.Second))
|
|
if rm.Status != RunManifestStatusSucceeded {
|
|
t.Fatalf("status = %q, want %q", rm.Status, RunManifestStatusSucceeded)
|
|
}
|
|
}
|