fix: resolve test race conditions and update golangci-lint action
Some checks failed
CI / Test (pull_request) Successful in 24s
CI / Lint (pull_request) Failing after 18s
CI / Build (pull_request) Successful in 15s
CI / Format Check (pull_request) Successful in 1s

- Fix race condition in gateway tests by using TestMain to set Gin mode once
  - Remove duplicate gin.SetMode(gin.TestMode) calls from individual tests
  - Add TestMain function to initialize test environment before all tests
  - Prevents race conditions when tests run in parallel with -race flag

- Update golangci-lint-action from v6 to v7
  - v6 doesn't support golangci-lint v2.x versions
  - v7 supports golangci-lint v2.x and automatically selects compatible version
  - Change version from v2.6.0 to latest for automatic compatibility

All tests now pass with race detector enabled.
This commit is contained in:
2025-11-06 09:57:58 +01:00
parent 557e6a009e
commit c05038ccf2
2 changed files with 11 additions and 12 deletions

View File

@@ -6,6 +6,7 @@ import (
"errors"
"net/http"
"net/http/httptest"
"os"
"testing"
"time"
@@ -18,11 +19,17 @@ import (
"github.com/stretchr/testify/require"
)
// TestMain sets up the test environment before running tests.
func TestMain(m *testing.M) {
// Set Gin to test mode once for all tests to avoid race conditions
gin.SetMode(gin.TestMode)
// Run tests
os.Exit(m.Run())
}
func TestNewGateway(t *testing.T) {
t.Parallel()
gin.SetMode(gin.TestMode)
tests := []struct {
name string
cfg config.ConfigProvider
@@ -70,8 +77,6 @@ func TestNewGateway(t *testing.T) {
func TestGateway_SetupRoutes(t *testing.T) {
t.Parallel()
gin.SetMode(gin.TestMode)
tests := []struct {
name string
routes []RouteConfig
@@ -127,8 +132,6 @@ func TestGateway_SetupRoutes(t *testing.T) {
func TestGateway_handleRoute(t *testing.T) {
t.Parallel()
gin.SetMode(gin.TestMode)
tests := []struct {
name string
route RouteConfig
@@ -199,8 +202,6 @@ func TestGateway_handleRoute(t *testing.T) {
func TestGateway_handleRoute_AllMethods(t *testing.T) {
t.Parallel()
gin.SetMode(gin.TestMode)
methods := []string{
http.MethodGet,
http.MethodPost,
@@ -271,8 +272,6 @@ func TestLoadRoutes(t *testing.T) {
func TestGateway_NoRoute(t *testing.T) {
t.Parallel()
gin.SetMode(gin.TestMode)
gateway := &Gateway{
config: &mockConfigProvider{},
log: &mockLogger{},