47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"git.novox.be/novox/mesh-sdk/go/delivery"
|
|
)
|
|
|
|
// The read tools answer what the steps state holds: a finished build's result is there, read by the step's id.
|
|
func TestTheReadToolsAnswerAStepsResult(t *testing.T) {
|
|
m, _, states := setup(t, same)
|
|
res, st := runBuild(t, m, states, nil)
|
|
if st.State != delivery.StepPassed {
|
|
t.Fatalf("step = %+v", st)
|
|
}
|
|
m.ReadSteps = StateRead{
|
|
Keys: func() ([]string, error) {
|
|
states.mu.Lock()
|
|
defer states.mu.Unlock()
|
|
var k []string
|
|
for key := range states.steps {
|
|
k = append(k, key)
|
|
}
|
|
return k, nil
|
|
},
|
|
Get: func(key string) (json.RawMessage, error) {
|
|
states.mu.Lock()
|
|
defer states.mu.Unlock()
|
|
v := states.steps[key]
|
|
return json.Marshal(v[len(v)-1])
|
|
},
|
|
}
|
|
got, err := m.ReadStep(st.ID)
|
|
if err != nil || got.State != delivery.StepPassed {
|
|
t.Fatalf("ReadStep = %+v, %v", got, err)
|
|
}
|
|
var back BuildResult
|
|
if err := json.Unmarshal(got.Result, &back); err != nil || back.Digest != res.Digest {
|
|
t.Errorf("result = %s, %v", got.Result, err)
|
|
}
|
|
lines, err := m.RecentSteps(0)
|
|
if err != nil || len(lines) != 1 || lines[0].Tool != BuildTool {
|
|
t.Errorf("steps = %+v, %v", lines, err)
|
|
}
|
|
}
|