The seats test I moved to internal/ownmanifest parsed each catalogue manifest alone, so claude-code's managed_settings and dunst's font-size, which fall back to a predefined key, were refused where the check clones the catalogue beside (ADR 0348 section 7). It reads them with ReadTreeManifest from the catalogue's root, as the tests that issue 914 fixed do. merge-check.sh differed from main in a comment only; it is main's again.
51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
package ownmanifest
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"git.novox.be/novox/mesh-sdk/go/catalogue"
|
|
"github.com/novox/mesh-controller/internal/beside"
|
|
)
|
|
|
|
// Every module in use claims a seat in the set, so closing it refuses nothing that runs.
|
|
//
|
|
// Read from the catalogue (internal/beside) and from this repository's own manifest, the two places a
|
|
// manifest lives (ADR 0069). The private-network module's manifest is composed in code, and its claim
|
|
// is checked where it is composed.
|
|
func TestEveryManifestInUseClaimsASeatTheMeshDefines(t *testing.T) {
|
|
paths, _ := filepath.Glob(filepath.Join(beside.Catalogue(t), "*", "module.json"))
|
|
if len(paths) == 0 {
|
|
t.Fatal("no manifests in the catalogue, so this proved nothing")
|
|
}
|
|
root := beside.Dir(t, "mesh-catalog")
|
|
paths = append(paths, "../../module.json")
|
|
var checked int
|
|
for _, path := range paths {
|
|
// The SDK's claimProblems is unexported; the parser runs it on every manifest whose claims are well formed
|
|
// (go/catalogue manifest.go), so a manifest that parses claims only seats the mesh defines or declares. A
|
|
// catalogue manifest is judged as the merge check judges it, against the predefined list at the root of the tree it
|
|
// is read in (ADR 0348 §7, issue 914); this repository's own is judged alone.
|
|
var m catalogue.Manifest
|
|
var err error
|
|
if path == "../../module.json" {
|
|
var raw []byte
|
|
if raw, err = os.ReadFile(path); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
m, err = catalogue.ParseManifest(raw)
|
|
} else {
|
|
m, err = catalogue.ReadTreeManifest(root, filepath.Dir(path))
|
|
}
|
|
if err != nil {
|
|
t.Errorf("%s: %v", path, err)
|
|
continue
|
|
}
|
|
checked += len(m.Claims)
|
|
}
|
|
if checked == 0 {
|
|
t.Fatal("no claims were checked, so this proved nothing")
|
|
}
|
|
}
|