diff --git a/internal/semerrgroup/sem_test.go b/internal/semerrgroup/sem_test.go index 9fa1207e8..1e06856eb 100644 --- a/internal/semerrgroup/sem_test.go +++ b/internal/semerrgroup/sem_test.go @@ -1,6 +1,7 @@ package semerrgroup import ( + "fmt" "sync" "testing" "time" @@ -26,21 +27,30 @@ func TestSemaphore(t *testing.T) { } func TestSemaphoreOrder(t *testing.T) { - num := 10 + var num = 10 var g = New(1) - output := make(chan int) - go func() { - for i := 0; i < num; i++ { - require.Equal(t, <-output, i) - } - require.NoError(t, g.Wait()) - }() + var output = []int{} for i := 0; i < num; i++ { - j := i + i := i g.Go(func() error { - output <- j + output = append(output, i) return nil }) } require.NoError(t, g.Wait()) + require.Equal(t, []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, output) +} + +func TestSemaphoreOrderError(t *testing.T) { + var g = New(1) + var output = []int{} + for i := 0; i < 10; i++ { + i := i + g.Go(func() error { + output = append(output, i) + return fmt.Errorf("fake err") + }) + } + require.EqualError(t, g.Wait(), "fake err") + require.Equal(t, []int{0}, output) }