From 80ee9a74a73b6a3983cdc1082ac0c0cb46ab5eb7 Mon Sep 17 00:00:00 2001 From: "Masih H. Derkani" Date: Wed, 6 Aug 2025 12:26:31 +0100 Subject: [PATCH] Consistently use `testify` for test assertions This repo already has a dependency to `stretchr/testify`. Use it consistently across all tests. Separately, improve temporary file creation using `t.TempDir`, which would automatically clean up the files after test ends. --- config/settings_test.go | 59 +++++++++------------------------- utils/service/parallel_test.go | 21 +++++------- utils/wait_test.go | 14 +++----- 3 files changed, 28 insertions(+), 66 deletions(-) diff --git a/config/settings_test.go b/config/settings_test.go index a14b5b0..1b92062 100644 --- a/config/settings_test.go +++ b/config/settings_test.go @@ -1,13 +1,14 @@ package config import ( - "github.com/stretchr/testify/require" "os" + "path/filepath" "testing" "time" "github.com/spf13/cobra" "github.com/spf13/viper" + "github.com/stretchr/testify/require" ) func TestArgumentPrecedence(t *testing.T) { @@ -71,13 +72,7 @@ func TestArgumentPrecedence(t *testing.T) { viper.Reset() // Create temporary config file - configFile, err := createTempConfigFile(t, tt.configContent) - if err != nil { - t.Fatalf("Failed to create temp config file: %v", err) - } - defer func() { - require.NoError(t, os.Remove(configFile)) - }() + configFile := createTempConfigFile(t, tt.configContent) // Create test command with flags cmd := &cobra.Command{ @@ -99,34 +94,22 @@ func TestArgumentPrecedence(t *testing.T) { // Parse CLI args if len(tt.cliArgs) > 0 { cmd.SetArgs(tt.cliArgs) - if err := cmd.Execute(); err != nil { - t.Fatalf("Failed to parse CLI args: %v", err) - } + require.NoError(t, cmd.Execute(), "Failed to parse CLI args") } // Initialize Viper - if err := InitializeViper(cmd); err != nil { - t.Fatalf("Failed to initialize Viper: %v", err) - } + require.NoError(t, InitializeViper(cmd), "Failed to initialize Viper") // Load config file - if err := LoadConfigFile(configFile); err != nil { - t.Fatalf("Failed to load config file: %v", err) - } + require.NoError(t, LoadConfigFile(configFile), "Failed to load config file") // Resolve settings settings := ResolveSettings() // Verify expectations - if settings.StatsInterval != tt.expectedStats { - t.Errorf("StatsInterval: expected %v, got %v", tt.expectedStats, settings.StatsInterval) - } - if settings.Workers != tt.expectedWorkers { - t.Errorf("Workers: expected %d, got %d", tt.expectedWorkers, settings.Workers) - } - if settings.TPS != tt.expectedTPS { - t.Errorf("TPS: expected %f, got %f", tt.expectedTPS, settings.TPS) - } + require.Equal(t, tt.expectedStats, settings.StatsInterval, "StatsInterval: expected %v, got %v", tt.expectedStats, settings.StatsInterval) + require.Equal(t, tt.expectedWorkers, settings.Workers, "Workers: expected %d, got %d", tt.expectedWorkers, settings.Workers) + require.Equal(t, tt.expectedTPS, settings.TPS, "TPS: expected %f, got %f", tt.expectedTPS, settings.TPS) }) } } @@ -153,22 +136,10 @@ func TestDefaultSettings(t *testing.T) { } // Helper function to create temporary config files for testing -func createTempConfigFile(t *testing.T, content string) (string, error) { - tmpFile, err := os.CreateTemp("", "test-config-*.json") - if err != nil { - return "", err - } - - if _, err := tmpFile.WriteString(content); err != nil { - require.NoError(t, tmpFile.Close()) - require.NoError(t, os.Remove(tmpFile.Name())) - return "", err - } - - if err := tmpFile.Close(); err != nil { - require.NoError(t, os.Remove(tmpFile.Name())) - return "", err - } - - return tmpFile.Name(), nil +func createTempConfigFile(t *testing.T, content string) string { + t.Helper() + destination := filepath.Join(t.TempDir(), "test-config.json") + err := os.WriteFile(destination, []byte(content), 0644) + require.NoError(t, err, "Failed to create temp config file: %v", err) + return destination } diff --git a/utils/service/parallel_test.go b/utils/service/parallel_test.go index 2079e29..57f7ba2 100644 --- a/utils/service/parallel_test.go +++ b/utils/service/parallel_test.go @@ -3,11 +3,13 @@ package service import ( "errors" "testing" + + "github.com/stretchr/testify/require" ) func TestParallelOk(t *testing.T) { x := [10]int{} - if err := Parallel(func(s ParallelScope) error { + err := Parallel(func(s ParallelScope) error { for i := range x { s.Spawn(func() error { x[i] = i @@ -15,13 +17,10 @@ func TestParallelOk(t *testing.T) { }) } return nil - }); err != nil { - t.Fatal(err) - } + }) + require.NoError(t, err) for want, got := range x { - if want != got { - t.Fatalf("x[%d] = %d, want %d", want, got, want) - } + require.Equal(t, want, got, "x[%d] = %d, want %d", want, got, want) } } @@ -40,15 +39,11 @@ func TestParallelFail(t *testing.T) { } return nil }) - if !errors.Is(err, wantErr) { - t.Fatalf("err = %v, want %v", err, wantErr) - } + require.ErrorIs(t, wantErr, err, "err = %v, want %v", err, wantErr) for want, got := range x { if want%2 == 0 { want = 0 } - if want != got { - t.Fatalf("x[%d] = %d, want %d", want, got, want) - } + require.Equal(t, want, got, "x[%d] = %d, want %d", want, got, want) } } diff --git a/utils/wait_test.go b/utils/wait_test.go index 91edc12..0331ae9 100644 --- a/utils/wait_test.go +++ b/utils/wait_test.go @@ -4,20 +4,16 @@ import ( "encoding/json" "testing" "time" + + "github.com/stretchr/testify/require" ) func TestJSON(t *testing.T) { var got, want struct{ X Duration } want.X = Duration(100 * time.Millisecond) j, err := json.Marshal(want) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) t.Logf("%s", j) - if err := json.Unmarshal(j, &got); err != nil { - t.Fatal(err) - } - if err := TestDiff(want, got); err != nil { - t.Fatal(err) - } + require.NoError(t, json.Unmarshal(j, &got)) + require.NoError(t, TestDiff(want, got)) }