From 2e4e7e9a27f200259d814d80b969c2198fa7d02a Mon Sep 17 00:00:00 2001 From: Softonik Date: Sat, 26 Nov 2022 01:19:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=B5=D0=BD=D0=B5=D1=80=D1=91=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=B4=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BA=D0=B5=20=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D1=81?= =?UTF-8?q?=D1=86=D0=B5=D0=BD=D0=B0=D1=80=D0=B8=D0=B8=20(=D1=87=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=8C=202)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Поправлена ошибка нарушения последовательности шагов тестов, сохранённых в базе hashicorp/go-memdb@v1.3.2 Проявлялась в Go 1.19. В Go 1.17, которая в требованиях - проблемы не было. --- internal/storage/storage.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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)