fix: remove parallel execution from Gin tests to prevent data races
Some checks failed
CI / Test (pull_request) Successful in 11s
CI / Lint (pull_request) Failing after 5s
CI / Build (pull_request) Successful in 6s
CI / Format Check (pull_request) Successful in 2s

- Remove t.Parallel() from tests that use gin.SetMode()
  - gin.SetMode() modifies global state and is not thread-safe
  - Tests affected:
    * TestRequestIDMiddleware_GenerateNewID
    * TestRequestIDMiddleware_UseExistingID
    * TestLoggingMiddleware
    * TestLoggingMiddleware_WithRequestID
    * TestRequestIDMiddleware_MultipleRequests

- Add comments explaining why these tests cannot run in parallel
- All tests now pass with race detector enabled (-race flag)

This fixes data race warnings that were occurring when running tests
with the race detector, specifically when multiple tests tried to set
Gin's mode concurrently.
This commit is contained in:
2025-11-05 13:01:27 +01:00
parent 6b0ba2edc7
commit 82707186a0

View File

@@ -11,8 +11,7 @@ import (
) )
func TestRequestIDMiddleware_GenerateNewID(t *testing.T) { func TestRequestIDMiddleware_GenerateNewID(t *testing.T) {
t.Parallel() // Cannot run in parallel: gin.SetMode() modifies global state
gin.SetMode(gin.TestMode) gin.SetMode(gin.TestMode)
router := gin.New() router := gin.New()
router.Use(RequestIDMiddleware()) router.Use(RequestIDMiddleware())
@@ -41,8 +40,7 @@ func TestRequestIDMiddleware_GenerateNewID(t *testing.T) {
} }
func TestRequestIDMiddleware_UseExistingID(t *testing.T) { func TestRequestIDMiddleware_UseExistingID(t *testing.T) {
t.Parallel() // Cannot run in parallel: gin.SetMode() modifies global state
gin.SetMode(gin.TestMode) gin.SetMode(gin.TestMode)
router := gin.New() router := gin.New()
router.Use(RequestIDMiddleware()) router.Use(RequestIDMiddleware())
@@ -196,7 +194,7 @@ func TestUserIDFromContext(t *testing.T) {
} }
func TestLoggingMiddleware(t *testing.T) { func TestLoggingMiddleware(t *testing.T) {
t.Parallel() // Cannot run in parallel: gin.SetMode() modifies global state
// Create a mock logger that records log calls // Create a mock logger that records log calls
mockLog := &mockLoggerForMiddleware{} mockLog := &mockLoggerForMiddleware{}
@@ -238,7 +236,7 @@ func TestLoggingMiddleware(t *testing.T) {
} }
func TestLoggingMiddleware_WithRequestID(t *testing.T) { func TestLoggingMiddleware_WithRequestID(t *testing.T) {
t.Parallel() // Cannot run in parallel: gin.SetMode() modifies global state
// Create a mock logger // Create a mock logger
mockLog := &mockLoggerForMiddleware{} mockLog := &mockLoggerForMiddleware{}
@@ -272,8 +270,7 @@ func TestLoggingMiddleware_WithRequestID(t *testing.T) {
} }
func TestRequestIDMiddleware_MultipleRequests(t *testing.T) { func TestRequestIDMiddleware_MultipleRequests(t *testing.T) {
t.Parallel() // Cannot run in parallel: gin.SetMode() modifies global state
gin.SetMode(gin.TestMode) gin.SetMode(gin.TestMode)
router := gin.New() router := gin.New()
router.Use(RequestIDMiddleware()) router.Use(RequestIDMiddleware())