Files
mesh-delivery/modules/mesh-delivery-builder/cmd/mesh-delivery-builder-tools/reservedname_test.go
T
jschoubben 71a35a6376 MV1: move contracts and sdk under modules/, importers follow
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
2026-11-12 05:09:56 +01:00

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