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