From 63297c92315dec8fab5d7dd6d9e13d94d8c391e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Pokorn=C3=BD?= Date: Fri, 6 Feb 2026 23:43:02 +0100 Subject: [PATCH 1/2] =?UTF-8?q?test:=20=F0=9F=A7=AA=20add=20test=20coverin?= =?UTF-8?q?g=20#156?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pool/result_pool_test.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pool/result_pool_test.go b/pool/result_pool_test.go index 69b9de4..209d4f5 100644 --- a/pool/result_pool_test.go +++ b/pool/result_pool_test.go @@ -1,6 +1,7 @@ package pool_test import ( + "errors" "fmt" "math/rand" "strconv" @@ -83,6 +84,25 @@ func TestResultGroup(t *testing.T) { require.Equal(t, results, got) }) + t.Run("all results collected", func(t *testing.T) { + t.Parallel() + p := pool.NewWithResults[int]().WithErrors() + want := []int{1, 3} + + p.Go(func() (int, error) { + return 1, nil + }) + p.Go(func() (int, error) { + return 2, errors.New("an error") + }) + p.Go(func() (int, error) { + return 3, nil + }) + + got, _ := p.Wait() + require.Equal(t, want, got) + }) + t.Run("limit", func(t *testing.T) { t.Parallel() for _, maxGoroutines := range []int{1, 10, 100} { From b26ac7110e12c87ceaefa403603d202276e06f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Pokorn=C3=BD?= Date: Fri, 6 Feb 2026 23:44:24 +0100 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=F0=9F=90=9B=20fix=20filtering=20of?= =?UTF-8?q?=20errored=20results=20in=20Result=20Pool?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pool/result_pool.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/pool/result_pool.go b/pool/result_pool.go index f73a772..21cdab1 100644 --- a/pool/result_pool.go +++ b/pool/result_pool.go @@ -129,14 +129,11 @@ func (r *resultAggregator[T]) collect(collectErrored bool) []T { return r.results } - filtered := r.results[:0] + filtered := r.results sort.Ints(r.errored) - for i, e := range r.errored { - if i == 0 { - filtered = append(filtered, r.results[:e]...) - } else { - filtered = append(filtered, r.results[r.errored[i-1]+1:e]...) - } + for i := range r.errored { + e := r.errored[len(r.errored)-1-i] + filtered = append(filtered[:e], filtered[e+1:]...) } return filtered }