diff --git a/modules/mesh-build-go/buildstep/askrun_test.go b/modules/mesh-build-go/buildstep/askrun_test.go index 07dfa08a3..25ddb3f05 100644 --- a/modules/mesh-build-go/buildstep/askrun_test.go +++ b/modules/mesh-build-go/buildstep/askrun_test.go @@ -10,6 +10,8 @@ import ( "testing" "time" + nodebuildgo "git.novox.be/novox/mesh-delivery/contracts/go/seats/nodebuildgo" + nodebuildnode "git.novox.be/novox/mesh-delivery/contracts/go/seats/nodebuildnode" sdkstep "git.novox.be/novox/mesh-delivery/sdk/buildstep" ) @@ -340,3 +342,32 @@ func TestRunAskRunsEveryPackageAndLevelAfterAFailure(t *testing.T) { t.Fatalf("calls %v, levels %+v: want b then a at each of the two levels", r.calls, a.Levels) } } + +// A seat's own ask type (the generated one of any of the three build seats) is the neutral ask through the form's one +// conversion (sdkstep.AskOf), reads for its step description through the same conversion (askRead), and reaches the +// fetch tool as the fetch's arguments alone: no layout version, nothing of the ask's. +func TestASeatsAskTypeRunsAsTheNeutralAsk(t *testing.T) { + at := time.Now().UTC() + fetch := &nodebuildgo.Fetch{Commit: runCommit, Repository: "novox/x", Dir: "modules/m", Paths: []string{"src"}} + goAsk := nodebuildgo.StepAsk{V: sdkstep.StepAskVersion, ID: sdkstep.NewID(), Kind: sdkstep.AskDelivery, Language: sdkstep.AskGo, Asker: "mesh-delivery-builder", At: &at, + Build: &nodebuildgo.StepAskBuild{Module: "m", Path: "modules/m", Fetch: fetch, Artifacts: []nodebuildgo.AskArtifact{{Artifact: "bundle"}}}, + Packages: map[string]string{"git.novox.be/novox/mesh-sdk/go": runCommit}} + a, err := sdkstep.AskOf(goAsk) + if err != nil { + t.Fatal(err) + } + if read := askRead(a); read.Kind != sdkstep.AskDelivery || read.Build == nil || read.Build.Module != "m" { + t.Errorf("the step description reads %+v", read) + } + r := &recorder{fetch: map[string]any{"workspace": "/w"}} + if _, err := RunAsk(context.Background(), r.steps(), a); err != nil { + t.Fatal(err) + } + want := `fetch {"commit":"` + runCommit + `","dir":"modules/m","packages":{"git.novox.be/novox/mesh-sdk/go":"` + runCommit + `"},"paths":["src"],"repository":"novox/x"}` + if len(r.calls) == 0 || r.calls[0] != want { + t.Errorf("the fetch tool was called with %v, want %s", r.calls, want) + } + if back, err := sdkstep.AskAs[nodebuildnode.StepAsk](a); err != nil || back.Build == nil || back.Build.Module != "m" { + t.Errorf("the ask as another seat's type: %+v, %v", back, err) + } +}