Files
mesh-delivery/modules/mesh-delivery-forge-bridge/internal/gitfixture/gitfixture.go
T
jschoubben 0b597eb417 FB3, FB4, FB5: the bridge performs what the gate owes through the seat git and says each outcome, reads groups from the seat, and its owed tools
Taken over from the join (6ada2089, f1417ab0, 6e162a60, 3a4e62b0, 73fb42d7, ee15a280, a5476f62, 94a4e62a, 33907a81, e519cc87, e8f268c1) and fitted to the final
contracts: the seat's events are pull-updated, pull-merged, pull-closed, forge-delete; OwedEnded keeps only the fields §164 names; merge-pull
takes no ask. A merge act is performed only as a switched act (§169); from G the gate owes none (§167).

Builds: design 47 G §43, §45, §157, §161, §162, §163, §164, §167, §168, §169, §171, §250

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:54:56 +01:00

50 lines
1.5 KiB
Go

// Package gitfixture reads the seat git's own fixtures (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), "../../../../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] }