diff --git a/go/seatdef/seatdef.go b/go/seatdef/seatdef.go index f1336f3..6017b36 100644 --- a/go/seatdef/seatdef.go +++ b/go/seatdef/seatdef.go @@ -397,6 +397,8 @@ func (d Definition) check() Problems { ps = append(ps, Problem{where + ".subject", "missing"}) case e.Subject == stream && e.Family == "": ps = append(ps, Problem{where + ".subject", "a subject of the holder's own stream, and no family names that stream"}) + case e.Subject == own && e.Family != "": + ps = append(ps, Problem{where + ".subject", "a family names the holder's own stream, so the event is under " + stream}) case e.Subject != own && e.Subject != stream: ps = append(ps, Problem{where + ".subject", fmt.Sprintf("not %s, nor %s for an event kept in the holder's own stream", own, stream)}) } diff --git a/go/seatdef/seatdef_test.go b/go/seatdef/seatdef_test.go index e51f316..e385e38 100644 --- a/go/seatdef/seatdef_test.go +++ b/go/seatdef/seatdef_test.go @@ -45,6 +45,8 @@ func TestADefinitionIsReadStrictlyNamingWhatIsWrong(t *testing.T) { `"subject":"mesh.stream..event.verdict","family":"checker.asks"}],"family":`, 1), ""}, {"a holder's event on its own stream with no family", strings.Replace(whole, `"family":`, `"holder-events":[{"name":"verdict",`+ `"subject":"mesh.stream..event.verdict"}],"family":`, 1), "no family names that stream"}, + {"a holder's event kept in its own stream under its module's subjects", strings.Replace(whole, `"family":`, `"holder-events":[{"name":"verdict",`+ + `"subject":"mesh.mod..event.verdict","family":"checker.asks"}],"family":`, 1), "a family names the holder's own stream"}, {"a holder's event on a subject of no module", strings.Replace(whole, `"family":`, `"holder-events":[{"name":"verdict",`+ `"subject":"mesh.event.verdict"}],"family":`, 1), "holder-events[0].subject: not mesh.mod..event.verdict"}, {"a verb twice", strings.Replace(listGrain, `]}`, `,{"name":"add"}]}`, 1), `"add" twice`},