fix(exec): expand validPhases and remove schema enum constraint for phase
This commit is contained in:
@@ -10,7 +10,7 @@ import (
|
|||||||
// validates its own output before returning.
|
// validates its own output before returning.
|
||||||
type Result struct {
|
type Result struct {
|
||||||
Status string `json:"status"` // pass | fail | error
|
Status string `json:"status"` // pass | fail | error
|
||||||
Phase string `json:"phase"` // red | green | refactor
|
Phase string `json:"phase"` // red | green | refactor | retrospective | review | debug | spec | trainer
|
||||||
Skill string `json:"skill"` // tdd | review | ...
|
Skill string `json:"skill"` // tdd | review | ...
|
||||||
FilePath string `json:"file_path"` // absolute path to generated file
|
FilePath string `json:"file_path"` // absolute path to generated file
|
||||||
RunnerOutput string `json:"runner_output"` // raw stdout+stderr from test runner
|
RunnerOutput string `json:"runner_output"` // raw stdout+stderr from test runner
|
||||||
@@ -25,6 +25,10 @@ var validPhases = map[string]bool{
|
|||||||
"green": true,
|
"green": true,
|
||||||
"refactor": true,
|
"refactor": true,
|
||||||
"retrospective": true,
|
"retrospective": true,
|
||||||
|
"review": true,
|
||||||
|
"debug": true,
|
||||||
|
"spec": true,
|
||||||
|
"trainer": true,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r Result) Validate() error {
|
func (r Result) Validate() error {
|
||||||
@@ -33,7 +37,7 @@ func (r Result) Validate() error {
|
|||||||
errs = append(errs, "status must be pass|fail|error, got: "+r.Status)
|
errs = append(errs, "status must be pass|fail|error, got: "+r.Status)
|
||||||
}
|
}
|
||||||
if !validPhases[r.Phase] {
|
if !validPhases[r.Phase] {
|
||||||
errs = append(errs, "phase must be red|green|refactor, got: "+r.Phase)
|
errs = append(errs, "phase must be one of red|green|refactor|retrospective|review|debug|spec|trainer, got: "+r.Phase)
|
||||||
}
|
}
|
||||||
if r.Skill == "" {
|
if r.Skill == "" {
|
||||||
errs = append(errs, "skill is required")
|
errs = append(errs, "skill is required")
|
||||||
@@ -50,7 +54,7 @@ const Schema = `{
|
|||||||
"required": ["status","phase","skill","file_path","runner_output","verified","model_used","message"],
|
"required": ["status","phase","skill","file_path","runner_output","verified","model_used","message"],
|
||||||
"properties": {
|
"properties": {
|
||||||
"status": {"type": "string", "enum": ["pass","fail","error"]},
|
"status": {"type": "string", "enum": ["pass","fail","error"]},
|
||||||
"phase": {"type": "string", "enum": ["red","green","refactor"]},
|
"phase": {"type": "string"},
|
||||||
"skill": {"type": "string"},
|
"skill": {"type": "string"},
|
||||||
"file_path": {"type": "string"},
|
"file_path": {"type": "string"},
|
||||||
"runner_output": {"type": "string"},
|
"runner_output": {"type": "string"},
|
||||||
|
|||||||
@@ -69,3 +69,11 @@ func TestResultValidation(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestValidateAcceptsAllPhases(t *testing.T) {
|
||||||
|
phases := []string{"red", "green", "refactor", "retrospective", "review", "debug", "spec", "trainer"}
|
||||||
|
for _, phase := range phases {
|
||||||
|
r := exec.Result{Status: "pass", Phase: phase, Skill: "test", ModelUsed: "self", Message: "ok"}
|
||||||
|
assert.NoError(t, r.Validate(), "phase %q should be valid", phase)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user