51 lines
1.8 KiB
Go
51 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"slices"
|
|
"testing"
|
|
|
|
"git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/buildrun"
|
|
)
|
|
|
|
// TestTheNamesAreTheManifests: the holders and buckets the builder names are its manifest's `reads` (the gate's source, the
|
|
// build modules' steps and toolchains) and its `consumes` of the indexer's and assigner's views, since no contract names a
|
|
// holder (novox/hq ADR 0634 §1).
|
|
func TestTheNamesAreTheManifests(t *testing.T) {
|
|
raw, err := os.ReadFile("../../module.json")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var m struct {
|
|
Reads []string `json:"reads"`
|
|
Consumes []string `json:"consumes"`
|
|
}
|
|
if err := json.Unmarshal(raw, &m); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, read := range []string{
|
|
gateModule + ".source",
|
|
"mesh-build-go.steps", "mesh-build-go.toolchains", "mesh-build-image.steps", "mesh-build-node.steps", "mesh-build-node.toolchains",
|
|
} {
|
|
if !slices.Contains(m.Reads, read) {
|
|
t.Errorf("the builder reads %s, its manifest's reads are %v", read, m.Reads)
|
|
}
|
|
}
|
|
for _, view := range []string{indexerModule + ".views.modules", indexerModule + ".views.manifests", indexerModule + ".views.candidates",
|
|
indexerModule + ".views.packages", assignerModule + ".views.assignments"} {
|
|
if !slices.Contains(m.Consumes, view) {
|
|
t.Errorf("the builder follows %s, its manifest consumes %v", view, m.Consumes)
|
|
}
|
|
}
|
|
for want, got := range map[string]string{
|
|
"mesh-delivery-gate_source": sourceBucket, "mesh-build-go_steps": buildrun.StepsBucket("mesh-build-go"),
|
|
"mesh-build-node_toolchains": buildrun.ToolchainsBucket("mesh-build-node"), "mesh-delivery-indexer_packages": packagesBucket,
|
|
"mesh-delivery-assigner_assignments": buildrun.AssignmentsBucket,
|
|
} {
|
|
if want != got {
|
|
t.Errorf("a bucket is %q, want %q", got, want)
|
|
}
|
|
}
|
|
}
|