Files
mesh-catalog/modules/mesh-build-image/cmd/mesh-build-image/read_test.go
T

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)
}
}