diff --git a/internal/storage/storage.go b/internal/storage/storage.go index 72b7e86..11048f4 100644 --- a/internal/storage/storage.go +++ b/internal/storage/storage.go @@ -2,6 +2,8 @@ package storage import ( "fmt" + "sort" + "strconv" "sync" messages "github.com/cucumber/messages/go/v21" @@ -230,6 +232,8 @@ func (s *Storage) MustGetPickleStepResultsByPickleID(pickleID string) (psrs []mo psrs = append(psrs, v.(models.PickleStepResult)) } + sort.Sort(stepsSortByPickleStepID(psrs)) + return psrs } @@ -255,9 +259,33 @@ func (s *Storage) MustGetPickleStepResultsByStatus(status models.StepResultStatu psrs = append(psrs, v.(models.PickleStepResult)) } + sort.Sort(stepsSortByPickleStepID(psrs)) + return psrs } +type stepsSortByPickleStepID []models.PickleStepResult + +func (s stepsSortByPickleStepID) Len() int { + return len(s) +} + +func (s stepsSortByPickleStepID) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} + +func (s stepsSortByPickleStepID) Less(i, j int) bool { + num1, err := strconv.Atoi(s[i].PickleStepID) + if err != nil { + return false + } + num2, err := strconv.Atoi(s[j].PickleStepID) + if err != nil { + return false + } + return num1 < num2 +} + // MustInsertFeature will insert a feature and panic on error. func (s *Storage) MustInsertFeature(f *models.Feature) { s.mustInsert(tableFeature, f)