test: use synctest

Carlos Alexandro Becker created

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

Change summary

internal/csync/slices_test.go | 85 ++++++++++++++++++++----------------
1 file changed, 46 insertions(+), 39 deletions(-)

Detailed changes

internal/csync/slices_test.go 🔗

@@ -5,6 +5,7 @@ import (
 	"sync"
 	"sync/atomic"
 	"testing"
+	"testing/synctest"
 	"time"
 
 	"github.com/stretchr/testify/require"
@@ -13,43 +14,47 @@ import (
 func TestLazySlice_Seq(t *testing.T) {
 	t.Parallel()
 
-	data := []string{"a", "b", "c"}
-	s := NewLazySlice(func() []string {
-		// TODO: use synctest when new Go is out.
-		time.Sleep(10 * time.Millisecond) // Small delay to ensure loading happens
-		return data
-	})
+	synctest.Test(t, func(t *testing.T) {
+		t.Helper()
+		data := []string{"a", "b", "c"}
+		s := NewLazySlice(func() []string {
+			time.Sleep(10 * time.Millisecond) // Small delay to ensure loading happens
+			return data
+		})
 
-	var result []string
-	for v := range s.Seq() {
-		result = append(result, v)
-	}
+		var result []string
+		for v := range s.Seq() {
+			result = append(result, v)
+		}
 
-	require.Equal(t, data, result)
+		require.Equal(t, data, result)
+	})
 }
 
 func TestLazySlice_SeqWaitsForLoading(t *testing.T) {
 	t.Parallel()
+	synctest.Test(t, func(t *testing.T) {
+		t.Helper()
 
-	var loaded atomic.Bool
-	data := []string{"x", "y", "z"}
+		var loaded atomic.Bool
+		data := []string{"x", "y", "z"}
 
-	s := NewLazySlice(func() []string {
-		// TODO: use synctest when new Go is out.
-		time.Sleep(100 * time.Millisecond)
-		loaded.Store(true)
-		return data
-	})
+		s := NewLazySlice(func() []string {
+			time.Sleep(100 * time.Millisecond)
+			loaded.Store(true)
+			return data
+		})
 
-	require.False(t, loaded.Load(), "should not be loaded immediately")
+		require.False(t, loaded.Load(), "should not be loaded immediately")
 
-	var result []string
-	for v := range s.Seq() {
-		result = append(result, v)
-	}
+		var result []string
+		for v := range s.Seq() {
+			result = append(result, v)
+		}
 
-	require.True(t, loaded.Load(), "should be loaded after Seq")
-	require.Equal(t, data, result)
+		require.True(t, loaded.Load(), "should be loaded after Seq")
+		require.Equal(t, data, result)
+	})
 }
 
 func TestLazySlice_EmptySlice(t *testing.T) {
@@ -70,22 +75,24 @@ func TestLazySlice_EmptySlice(t *testing.T) {
 func TestLazySlice_EarlyBreak(t *testing.T) {
 	t.Parallel()
 
-	data := []string{"a", "b", "c", "d", "e"}
-	s := NewLazySlice(func() []string {
-		// TODO: use synctest when new Go is out.
-		time.Sleep(10 * time.Millisecond) // Small delay to ensure loading happens
-		return data
-	})
+	synctest.Test(t, func(t *testing.T) {
+		t.Helper()
+		data := []string{"a", "b", "c", "d", "e"}
+		s := NewLazySlice(func() []string {
+			time.Sleep(10 * time.Millisecond) // Small delay to ensure loading happens
+			return data
+		})
 
-	var result []string
-	for v := range s.Seq() {
-		result = append(result, v)
-		if len(result) == 2 {
-			break
+		var result []string
+		for v := range s.Seq() {
+			result = append(result, v)
+			if len(result) == 2 {
+				break
+			}
 		}
-	}
 
-	require.Equal(t, []string{"a", "b"}, result)
+		require.Equal(t, []string{"a", "b"}, result)
+	})
 }
 
 func TestSlice(t *testing.T) {