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
36 lines
1.6 KiB
Go
36 lines
1.6 KiB
Go
package selfcompose
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.novox.be/novox/mesh-delivery/modules/mesh-delivery-contracts/go/seats/meshwants"
|
|
)
|
|
|
|
// The node that keeps a kept build is the want's kept-on alone, for an artifact its parts name (design 47 G 526, A-50).
|
|
func TestTheKeepingNodeIsTheWantsKeptOn(t *testing.T) {
|
|
kd := strings.Repeat("6", 64)
|
|
for _, row := range []struct {
|
|
name, digest string
|
|
want *meshwants.WantsByWantNodeModuleValue
|
|
node string
|
|
kept bool
|
|
}{
|
|
{"kept, by its bare digest", kd, &meshwants.WantsByWantNodeModuleValue{Fp: "f1", KeptOn: "n3", Parts: map[string]string{"db:p": "sha256:" + kd}}, "n3", true},
|
|
{"kept, by the declared digest", "sha256:" + kd, &meshwants.WantsByWantNodeModuleValue{Fp: "f1", KeptOn: "n3", Parts: map[string]string{"db:p": "sha256:" + kd}}, "n3", true},
|
|
{"a digest the parts do not name", "sha256:" + strings.Repeat("7", 64), &meshwants.WantsByWantNodeModuleValue{Fp: "f1", KeptOn: "n3", Parts: map[string]string{"db:p": "sha256:" + kd}}, "", false},
|
|
{"a want naming no keeping node", kd, &meshwants.WantsByWantNodeModuleValue{Fp: "f1", Parts: map[string]string{"db:p": "sha256:" + kd}}, "", false},
|
|
{"no want of the module", kd, nil, "", false},
|
|
} {
|
|
c := &Composer{wants: map[string]meshwants.WantsByWantNodeModuleValue{}}
|
|
if row.want != nil {
|
|
c.wants["db"] = *row.want
|
|
}
|
|
node, fp, kept, err := c.KeptBuildOf(context.Background(), "db", row.digest)
|
|
if err != nil || node != row.node || kept != row.kept || (kept && fp != "f1") {
|
|
t.Errorf("%s: node %q fp %q kept %v err %v", row.name, node, fp, kept, err)
|
|
}
|
|
}
|
|
}
|