One local name is one form, and the old state says what it accepts: 0 is taken as 1 (issue 1966 D2)
This commit is contained in:
@@ -128,6 +128,19 @@ func BusStateProblems(m catalogue.Manifest) []string {
|
||||
"no dot (novox/hq ADR 0201, ADR 0595 §1)", m.Module))
|
||||
}
|
||||
storageOf := map[string]string{}
|
||||
oldSection := map[string]string{} // a local name an old section keeps, to that section (issue 1966 D2)
|
||||
for _, st := range m.State {
|
||||
oldSection[st.Name] = "state"
|
||||
}
|
||||
for _, l := range m.Logs {
|
||||
oldSection[l.Name] = "logs"
|
||||
}
|
||||
for _, st := range m.Streams {
|
||||
oldSection[st.Name] = "streams"
|
||||
}
|
||||
for _, o := range m.Objects {
|
||||
oldSection[o.Name] = "objects"
|
||||
}
|
||||
terminal := catalogue.TerminalKeys(m)
|
||||
for _, e := range m.BusState {
|
||||
at := fmt.Sprintf("%s's bus state %q", m.Module, e.Name)
|
||||
@@ -147,6 +160,11 @@ func BusStateProblems(m catalogue.Manifest) []string {
|
||||
"ADR 0595 §1)", at, first, e.Storage))
|
||||
}
|
||||
storageOf[e.Name] = e.Storage
|
||||
if section, kept := oldSection[e.Name]; kept {
|
||||
problems = append(problems, fmt.Sprintf(
|
||||
"%s: the name is also kept in the old section %s; one local name is one form, so a module that moves an "+
|
||||
"entry removes it from the old section (novox/hq ADR 0595 §11)", at, section))
|
||||
}
|
||||
problems = append(problems, busEntryProblems(at, e, terminal)...)
|
||||
}
|
||||
return problems
|
||||
|
||||
@@ -5362,7 +5362,7 @@ func StateProblems(m catalogue.Manifest) []string {
|
||||
seen[s.Name] = true
|
||||
if s.History < 0 || s.History > catalogue.StateMostHistory {
|
||||
problems = append(problems, fmt.Sprintf(
|
||||
"%s keeps %d values of %q; a key keeps between 1 and %d", m.Module, s.History, s.Name, catalogue.StateMostHistory))
|
||||
"%s keeps %d values of %q; a key keeps 0 or 1 to %d (0 is taken as 1)", m.Module, s.History, s.Name, catalogue.StateMostHistory))
|
||||
}
|
||||
if s.TTLSeconds < 0 {
|
||||
problems = append(problems, fmt.Sprintf("%s gives %q a negative lifetime", m.Module, s.Name))
|
||||
|
||||
@@ -907,6 +907,12 @@ func TestALogIsNamedLocallyAndCapped(t *testing.T) {
|
||||
{`{"module":"a.b","version":"1","logs":["c"]}`, `no dot`},
|
||||
} {
|
||||
_, err := ParseManifest([]byte(c.manifest))
|
||||
if c.says == "" {
|
||||
if err != nil {
|
||||
t.Errorf("%s was refused: %v", c.manifest, err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if err == nil {
|
||||
t.Errorf("%s was accepted", c.manifest)
|
||||
continue
|
||||
@@ -2877,13 +2883,23 @@ func TestAStateNameIsLocalAndOneToken(t *testing.T) {
|
||||
{`{"module":"a","version":"1","state":["mesh.servers"]}`, `keeps state "mesh.servers": a state is named locally`},
|
||||
{`{"module":"a","version":"1","state":["my_servers"]}`, `keeps state "my_servers"`},
|
||||
{`{"module":"a","version":"1","state":["s","s"]}`, `keeps state "s" twice`},
|
||||
{`{"module":"a","version":"1","state":[{"name":"s","history":65}]}`, `a key keeps between 1 and 64`},
|
||||
{`{"module":"a","version":"1","state":[{"name":"s","history":65}]}`, `a key keeps 0 or 1 to 64 (0 is taken as 1)`},
|
||||
{`{"module":"a","version":"1","state":[{"name":"s","history":0}]}`, ``}, // 0 passes, as before (ADR 0579 §1)
|
||||
// 1966/AC9: one name, one form
|
||||
{`{"module":"a","version":"1","state":["x"],"requires":[{"name":"x","storage":"key-value","template":"state"}]}`,
|
||||
`a's bus state "x": the name is also kept in the old section state`},
|
||||
{`{"module":"a.b","version":"1","state":["s"]}`, `no dot`},
|
||||
{`{"module":"a","version":"1","reads":["bindings"]}`, `a read is <module>.<name>`},
|
||||
{`{"module":"a","version":"1","reads":["a.s"]}`, `which is its own state`},
|
||||
{`{"module":"a","version":"1","state":[{"name":"s","shared":true}]}`, `{name, history, ttl-seconds, per-machine, key-ttl}`},
|
||||
} {
|
||||
_, err := ParseManifest([]byte(c.manifest))
|
||||
if c.says == "" {
|
||||
if err != nil {
|
||||
t.Errorf("%s was refused: %v", c.manifest, err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if err == nil {
|
||||
t.Errorf("%s was accepted", c.manifest)
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user