dispatch: allow empty route kinds (match all) + add routing tests
- config: permit routes[].kinds to be omitted/empty; treat as "all kinds"
- dispatch: compile empty kinds to Route{Kinds:nil} (match all kinds)
- tests: add coverage for route compilation + config validation edge cases
Files:
- config/load.go
- config/config.go
- dispatch/routes.go
- config/validate_test.go
- dispatch/routes_test.go
This commit is contained in:
@@ -133,16 +133,12 @@ func (c *Config) Validate() error {
|
||||
m.Add(fieldErr(path+".sink", fmt.Sprintf("references unknown sink %q (define it under sinks:)", r.Sink)))
|
||||
}
|
||||
|
||||
if len(r.Kinds) == 0 {
|
||||
// You could relax this later (e.g. empty == "all kinds"), but for now
|
||||
// keeping it strict prevents accidental "route does nothing".
|
||||
m.Add(fieldErr(path+".kinds", "must contain at least one kind"))
|
||||
} else {
|
||||
for j, k := range r.Kinds {
|
||||
kpath := fmt.Sprintf("%s.kinds[%d]", path, j)
|
||||
if strings.TrimSpace(k) == "" {
|
||||
m.Add(fieldErr(kpath, "kind cannot be empty"))
|
||||
}
|
||||
// Kinds is optional. If omitted or empty, the route matches ALL kinds.
|
||||
// If provided, each entry must be non-empty.
|
||||
for j, k := range r.Kinds {
|
||||
kpath := fmt.Sprintf("%s.kinds[%d]", path, j)
|
||||
if strings.TrimSpace(k) == "" {
|
||||
m.Add(fieldErr(kpath, "kind cannot be empty"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user