53 lines
1.7 KiB
Go
53 lines
1.7 KiB
Go
//go:build integration
|
|
|
|
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/novox/mesh-controller/internal/catalogue"
|
|
"github.com/novox/mesh-controller/internal/inventory"
|
|
"github.com/novox/mesh-controller/internal/link"
|
|
)
|
|
|
|
func TestAPlanStandingStillIsNotSavedAgain(t *testing.T) {
|
|
open := aMesh(t)
|
|
ctx := t.Context()
|
|
inv := open.inventory
|
|
asked := asksRecorded(t)
|
|
if err := inv.RegisterModule(ctx, catalogue.Manifest{Module: "app", Version: "1"},
|
|
inventory.Source{Repository: "novox/mesh-catalog", Seat: "git", Path: "modules/app", Ref: "main",
|
|
BuiltFrom: "c0", Head: "c0"}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
m := link.SourceMoved{Owner: "novox", Repo: "mesh-catalog", Base: "main", Commit: "c1aaaaaaaa",
|
|
Paths: []string{"modules/app/index.ts"}, ModuleDirs: []string{"modules/app"}, ModuleDirsSaid: true}
|
|
if err := (following{open: open}).SourceMoved(ctx, m); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
advanceHeld(ctx, open)
|
|
recent, err := inv.RecentPlans(ctx, 1)
|
|
if err != nil || len(recent) != 1 || len(*asked) != 1 {
|
|
t.Fatalf("no plan building: %v %v, asked %v", recent, err, *asked)
|
|
}
|
|
before := recent[0]
|
|
if before.State != inventory.PlanBuilding || before.Modules["app"] == nil || before.Modules["app"].State != "asked" {
|
|
t.Fatalf("the plan is not waiting on its build: %+v", before)
|
|
}
|
|
|
|
for range 3 {
|
|
advanceHeld(ctx, open)
|
|
}
|
|
after, err := inv.PlanByID(ctx, before.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if after.Revision != before.Revision || !after.Updated.Equal(before.Updated) {
|
|
t.Fatalf("a plan that did not move was saved again: revision %d → %d, saved %s → %s",
|
|
before.Revision, after.Revision, before.Updated, after.Updated)
|
|
}
|
|
if len(*asked) != 1 {
|
|
t.Fatalf("advancing asked again: %v", *asked)
|
|
}
|
|
}
|