The delivery repository's contracts and SDK live under modules/ as mesh-delivery-contracts and mesh-delivery-sdk, their Go module paths renamed to match the folders (the TypeScript names already did), and every importer in mesh-delivery, mesh-catalog, mesh-host, mesh-tools and mesh-sdk follows in the same group: a design as it should be, one path per module, checked by the group's check building every importer. Builds: design 47 G §427, §88 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
45 lines
2.0 KiB
Go
45 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.novox.be/novox/mesh-contracts/health-and-repair/go/clients/meshhandactsclient"
|
|
"git.novox.be/novox/mesh-delivery/modules/mesh-delivery-contracts/go/seats/meshbuilds"
|
|
|
|
"mesh-delivery-builder/internal/build"
|
|
"mesh-delivery-builder/internal/versions"
|
|
)
|
|
|
|
// Design 47 G §572, §582, A-70: builder_versions, asked by a name, calls reserved and answers what it answers.
|
|
func TestBuilderVersionsByNameCallsReserved(t *testing.T) {
|
|
none := versions.Reader{Keys: func() ([]string, error) { return nil, nil }, Get: func(string) (json.RawMessage, bool, error) { return nil, false, nil }}
|
|
want := meshbuilds.ReservedAnswer{Module: "mesh-sdk", Version: "0.1.2", Released: true, Artifacts: []meshbuilds.ReservedAnswerArtifactsItem{{Artifact: "mesh-sdk:ts", Digest: "sha256:dd"}}}
|
|
// The bundle serves no verb reserved any more: the builder's process does (design 47 G A-115, A-127).
|
|
acts := meshhandactsclient.Recorder{Ask: func(string, any) (json.RawMessage, error) { return json.RawMessage(`{}`), nil }}
|
|
for _, tl := range reservedTools(none, nil, time.Now, acts) {
|
|
if tl.Name == "reserved" {
|
|
t.Error("the bundle serves the verb reserved, which the builder's process answers")
|
|
}
|
|
}
|
|
var called []string
|
|
reserve := func(name, version string) (meshbuilds.ReservedAnswer, error) {
|
|
called = append(called, name+"@"+version)
|
|
return want, nil
|
|
}
|
|
tools := Tools(build.StuckReader{}, nil, nil, nil, nil, time.Now, none, none, none, reserve)
|
|
for _, tl := range tools {
|
|
if tl.Name == versions.VersionsTool {
|
|
out, err := tl.Run(map[string]any{"name": "@novox/mesh-sdk", "version": "0.1.2"})
|
|
ans, ok := out.(versions.VersionsAnswer)
|
|
if err != nil || !ok || ans.Reserved == nil || ans.Reserved.Module != "mesh-sdk" || !ans.Reserved.Released {
|
|
t.Fatalf("builder_versions by name = %+v (%v), want reserved's answer in it", out, err)
|
|
}
|
|
}
|
|
}
|
|
if len(called) != 1 || called[0] != "@novox/mesh-sdk@0.1.2" {
|
|
t.Errorf("reserved was called %v, want once, by the name and version", called)
|
|
}
|
|
}
|