Files
mesh-delivery/modules/mesh-delivery-forge-bridge/internal/gitfixture/gitfixture.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

50 lines
1.6 KiB
Go

// Package gitfixture reads the seat git's own fixtures (modules/mesh-delivery-contracts/seats/git/fixtures/verbs.json), so the bridge's unit
// fakes answer what the seat's holder answers and nothing the contract does not say (design 47 *The seat `git`*).
package gitfixture
import (
"encoding/json"
"os"
"path/filepath"
"runtime"
"testing"
)
// All is every fixture's body named name of of (such as "file answers", "verb:file.answer"), in the file's order; a
// name with none fails the test.
func All(t testing.TB, name, of string) []json.RawMessage {
t.Helper()
return Seat(t, "git", "verbs", name, of)
}
// Seat is every fixture's body named name of of in a seat's fixtures file (such as "mesh-delivery", "events"), so the
// bridge's fakes of the seats it hears say what those seats say.
func Seat(t testing.TB, seat, file, name, of string) []json.RawMessage {
t.Helper()
_, here, _, _ := runtime.Caller(0)
raw, err := os.ReadFile(filepath.Join(filepath.Dir(here), "../../../mesh-delivery-contracts/seats", seat, "fixtures", file+".json"))
if err != nil {
t.Fatal(err)
}
var all []struct {
Name, Of string
Given json.RawMessage
}
if err := json.Unmarshal(raw, &all); err != nil {
t.Fatal(err)
}
var out []json.RawMessage
for _, f := range all {
if f.Name == name && f.Of == of {
out = append(out, f.Given)
}
}
if len(out) == 0 {
t.Fatalf("no fixture %q of %s", name, of)
}
return out
}
// Given is the first fixture's body named name of of.
func Given(t testing.TB, name, of string) json.RawMessage { t.Helper(); return All(t, name, of)[0] }