From b29f09c3e0af71e9300283f1a9244ef429c42a4d Mon Sep 17 00:00:00 2001 From: Oleksandr Redko Date: Fri, 24 Oct 2025 20:06:40 +0300 Subject: [PATCH] refactor(test): avoid panic in tests with goroutines --- .golangci.yml | 1 + bulk_imports_test.go | 4 ++-- commits_test.go | 4 ++-- dependency_list_export_test.go | 4 ++-- gitlab_test.go | 2 +- pagination_test.go | 6 +++--- project_aliases_test.go | 27 ++++++++++++++------------- request_handler_test.go | 9 ++++----- 8 files changed, 29 insertions(+), 28 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 3a2f6615..de06c9da 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -68,6 +68,7 @@ linters: - error-nil - expected-actual - formatter + - go-require - len - negative-positive - nil-compare diff --git a/bulk_imports_test.go b/bulk_imports_test.go index d0f23c3a..67abd7d0 100644 --- a/bulk_imports_test.go +++ b/bulk_imports_test.go @@ -42,9 +42,9 @@ func TestBulkImportsService_StartMigration(t *testing.T) { mux.HandleFunc("/api/v4/bulk_imports", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodPost) gotBody, err := io.ReadAll(r.Body) - require.NoError(t, err) + assert.NoError(t, err) wantBody, err := os.ReadFile("testdata/post_bulk_imports_request.json") - require.NoError(t, err) + assert.NoError(t, err) assert.JSONEq(t, string(wantBody), string(gotBody)) mustWriteHTTPResponse(t, w, "testdata/post_bulk_imports_response.json") }) diff --git a/commits_test.go b/commits_test.go index 7134d9a9..967b6a1f 100644 --- a/commits_test.go +++ b/commits_test.go @@ -139,11 +139,11 @@ func TestSetCommitStatus(t *testing.T) { mux.HandleFunc("/api/v4/projects/1/statuses/b0b3a907f41409829b307a28b82fdbd552ee5a27", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodPost) body, err := io.ReadAll(r.Body) - require.NoError(t, err) + assert.NoError(t, err) var content SetCommitStatusOptions err = json.Unmarshal(body, &content) - require.NoError(t, err) + assert.NoError(t, err) assert.Equal(t, "ci/jenkins", *content.Name) assert.Equal(t, 99.9, *content.Coverage) diff --git a/dependency_list_export_test.go b/dependency_list_export_test.go index 433f2267..b3bdf6e0 100644 --- a/dependency_list_export_test.go +++ b/dependency_list_export_test.go @@ -19,11 +19,11 @@ func TestCreateDependencyListExport(t *testing.T) { mux.HandleFunc("/api/v4/pipelines/1234/dependency_list_exports", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodPost) body, err := io.ReadAll(r.Body) - require.NoError(t, err) + assert.NoError(t, err) var content CreateDependencyListExportOptions err = json.Unmarshal(body, &content) - require.NoError(t, err) + assert.NoError(t, err) assert.Equal(t, "sbom", *content.ExportType) mustWriteHTTPResponse(t, w, "testdata/create_dependency_list_export.json") diff --git a/gitlab_test.go b/gitlab_test.go index caca07c7..0359e9fb 100644 --- a/gitlab_test.go +++ b/gitlab_test.go @@ -982,7 +982,7 @@ func TestClient_CookieJar(t *testing.T) { mux := http.NewServeMux() mux.HandleFunc("/api/v4/user", func(w http.ResponseWriter, r *http.Request) { cookie, err := r.Cookie("test-cookie") - require.NoError(t, err) + assert.NoError(t, err) assert.Equal(t, "yummy", cookie.Value) diff --git a/pagination_test.go b/pagination_test.go index f4c2792d..7dff6555 100644 --- a/pagination_test.go +++ b/pagination_test.go @@ -200,7 +200,7 @@ func handleTwoPagesSuccessfully(t *testing.T, mux *http.ServeMux) { w.Header().Add("X-Next-Page", "0") fmt.Fprint(w, `[{"id":2}]`) default: - require.Fail(t, fmt.Sprintf("received request for unexpected page '%s'", page)) + assert.Fail(t, fmt.Sprintf("received request for unexpected page '%s'", page)) } }) } @@ -215,7 +215,7 @@ func handleTwoPagesSuccessfullyWithKeyset(t *testing.T, mux *http.ServeMux) { case "2": fmt.Fprint(w, `[{"id":2}]`) default: - require.Fail(t, fmt.Sprintf("received request for unexpected page for id_before='%s'", idBefore)) + assert.Fail(t, fmt.Sprintf("received request for unexpected page for id_before='%s'", idBefore)) } }) } @@ -230,7 +230,7 @@ func handleTwoPagesWithFailure(t *testing.T, mux *http.ServeMux) { case "2": w.WriteHeader(http.StatusInternalServerError) default: - require.Failf(t, "received request for unexpected page %d", page) + assert.Failf(t, "received request for unexpected page %d", page) } }) } diff --git a/project_aliases_test.go b/project_aliases_test.go index 417206ba..ec6a38fd 100644 --- a/project_aliases_test.go +++ b/project_aliases_test.go @@ -16,18 +16,19 @@ func TestProjectAliasesService_CreateProjectAlias(t *testing.T) { mux, client := setup(t) mux.HandleFunc("/api/v4/project_aliases", func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "POST", r.Method) + assert.Equal(t, "POST", r.Method) body, err := io.ReadAll(r.Body) - require.NoError(t, err) + assert.NoError(t, err) var payload CreateProjectAliasOptions err = json.Unmarshal(body, &payload) - require.NoError(t, err) + assert.NoError(t, err) - require.NotNil(t, payload.Name) - assert.Equal(t, "my-alias", *payload.Name) - assert.Equal(t, 1, payload.ProjectID) + if assert.NotNil(t, payload.Name) { + assert.Equal(t, "my-alias", *payload.Name) + assert.Equal(t, 1, payload.ProjectID) + } w.WriteHeader(http.StatusCreated) w.Write([]byte(`{"id": 10, "name": "my-alias", "project_id": 1}`)) @@ -52,7 +53,7 @@ func TestProjectAliasesService_DeleteProjectAlias(t *testing.T) { mux, client := setup(t) mux.HandleFunc("/api/v4/project_aliases/my-alias", func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "DELETE", r.Method) + assert.Equal(t, "DELETE", r.Method) w.WriteHeader(http.StatusNoContent) }) @@ -68,7 +69,7 @@ func TestProjectAliasesService_GetProjectAlias(t *testing.T) { mux, client := setup(t) mux.HandleFunc("/api/v4/project_aliases/my-alias", func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "GET", r.Method) + assert.Equal(t, "GET", r.Method) w.WriteHeader(http.StatusOK) w.Write([]byte(`{"id": 10, "name": "my-alias", "project_id": 1}`)) }) @@ -88,7 +89,7 @@ func TestProjectAliasesService_ListProjectAliases(t *testing.T) { mux, client := setup(t) mux.HandleFunc("/api/v4/project_aliases", func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "GET", r.Method) + assert.Equal(t, "GET", r.Method) w.WriteHeader(http.StatusOK) w.Write([]byte(`[{"id": 10, "name": "my-alias", "project_id": 1}]`)) }) @@ -112,7 +113,7 @@ func TestProjectAliasesService_GetProjectAlias_WithSpecialCharacters(t *testing. expectedEscaped := "my%2Falias%3Fwith%3Dspecial%26chars" mux.HandleFunc("/api/v4/project_aliases/"+expectedEscaped, func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "GET", r.Method) + assert.Equal(t, "GET", r.Method) w.WriteHeader(http.StatusOK) w.Write([]byte(`{"id": 10, "name": "my/alias?with=special&chars", "project_id": 1}`)) }) @@ -135,7 +136,7 @@ func TestProjectAliasesService_DeleteProjectAlias_WithSpecialCharacters(t *testi expectedEscaped := "my%2Falias%3Fwith%3Dspecial%26chars" mux.HandleFunc("/api/v4/project_aliases/"+expectedEscaped, func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "DELETE", r.Method) + assert.Equal(t, "DELETE", r.Method) w.WriteHeader(http.StatusNoContent) }) @@ -154,7 +155,7 @@ func TestProjectAliasesService_GetProjectAlias_WithSpacesAndDots(t *testing.T) { expectedEscaped := "my%20alias%2Ename" mux.HandleFunc("/api/v4/project_aliases/"+expectedEscaped, func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "GET", r.Method) + assert.Equal(t, "GET", r.Method) w.WriteHeader(http.StatusOK) w.Write([]byte(`{"id": 20, "name": "my alias.name", "project_id": 2}`)) }) @@ -177,7 +178,7 @@ func TestProjectAliasesService_DeleteProjectAlias_WithSpacesAndDots(t *testing.T expectedEscaped := "my%20alias%2Ename" mux.HandleFunc("/api/v4/project_aliases/"+expectedEscaped, func(w http.ResponseWriter, r *http.Request) { - require.Equal(t, "DELETE", r.Method) + assert.Equal(t, "DELETE", r.Method) w.WriteHeader(http.StatusNoContent) }) diff --git a/request_handler_test.go b/request_handler_test.go index 66f7eae3..b976ca62 100644 --- a/request_handler_test.go +++ b/request_handler_test.go @@ -6,7 +6,6 @@ import ( "testing" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) // Test structs for testing @@ -58,8 +57,8 @@ func TestDoRequestPOSTWithBody(t *testing.T) { var reqBody TestProject err := json.NewDecoder(r.Body).Decode(&reqBody) - require.NoError(t, err) - require.Equal(t, "New Project", reqBody.Name) + assert.NoError(t, err) + assert.Equal(t, "New Project", reqBody.Name) w.WriteHeader(201) w.Header().Set("Content-Type", "application/json") @@ -239,8 +238,8 @@ func TestDoRequestVoidSuccessPUT(t *testing.T) { var reqBody map[string]interface{} err := json.NewDecoder(r.Body).Decode(&reqBody) - require.NoError(t, err) - require.Equal(t, "approve", reqBody["action"]) + assert.NoError(t, err) + assert.Equal(t, "approve", reqBody["action"]) w.WriteHeader(200) }) -- GitLab