diff --git a/workhorse/_support/lint_last_known_acceptable_go1.21.txt b/workhorse/_support/lint_last_known_acceptable_go1.21.txt
index 474a3735e58630e71c4fe16a098a82fe0c238c82..f47e272eea559e031c87f9159035ed0ba32de9d8 100644
--- a/workhorse/_support/lint_last_known_acceptable_go1.21.txt
+++ b/workhorse/_support/lint_last_known_acceptable_go1.21.txt
@@ -2,13 +2,7 @@ cmd/gitlab-resize-image/main.go:1:1: package-comments: should have a package com
 cmd/gitlab-resize-image/png/reader.go:1:1: package-comments: should have a package comment (revive)
 cmd/gitlab-resize-image/png/reader.go:26:1: exported: exported function NewReader should have comment or be unexported (revive)
 cmd/gitlab-resize-image/png/reader.go:78:17: var-declaration: should omit type []byte from declaration of var magicBytes; it will be inferred from the right-hand side (revive)
-cmd/gitlab-workhorse/authorization_test.go:71:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/authorization_test.go:73:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:111:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:114:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:115:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:116:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:120:3: go-require: do not use require in http handlers (testifylint)
+cmd/gitlab-workhorse/authorization_test.go:72:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/config_test.go:191: cmd/gitlab-workhorse/config_test.go:191: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO this is meant to be 50*time.Second ..." (godox)
 cmd/gitlab-workhorse/config_test.go:333:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/jobs_test.go:37:29: response body must be closed (bodyclose)
@@ -29,97 +23,49 @@ cmd/gitlab-workhorse/main.go:211:6: shadow: declaration of "err" shadows declara
 cmd/gitlab-workhorse/main.go:232:5: shadow: declaration of "err" shadows declaration at line 168 (govet)
 cmd/gitlab-workhorse/main.go:240:26: Error return value of `accessCloser.Close` is not checked (errcheck)
 cmd/gitlab-workhorse/main.go:264:10: G112: Potential Slowloris Attack because ReadHeaderTimeout is not configured in the http.Server (gosec)
-cmd/gitlab-workhorse/main_test.go:59:2: exitAfterDefer: os.Exit will exit, and `defer gitaly.CloseConnections()` will not run (gocritic)
-cmd/gitlab-workhorse/main_test.go:92:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:106:24: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:131:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:142:24: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:155:66: wrapperFunc: use http.NotFoundHandler method in `http.HandlerFunc(http.NotFound)` (gocritic)
-cmd/gitlab-workhorse/main_test.go:162:23: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:185:24: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:211:25: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:232:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:235:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:242:23: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:245:25: unnecessary conversion (unconvert)
-cmd/gitlab-workhorse/main_test.go:262:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:314:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:368:41: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:415:38: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:430:38: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:444:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:449:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:454:61: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:456:3: bool-compare: use require.True (testifylint)
-cmd/gitlab-workhorse/main_test.go:459:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:484:40: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:501:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:508:23: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:518:3: ifElseChain: rewrite if-else to switch statement (gocritic)
-cmd/gitlab-workhorse/main_test.go:527:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:564:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:574:21: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:577:3: var-naming: var requestIds should be requestIDs (revive)
-cmd/gitlab-workhorse/main_test.go:578:3: len: use require.Len (testifylint)
-cmd/gitlab-workhorse/main_test.go:650:4: var-naming: var propagatedRequestId should be propagatedRequestID (revive)
-cmd/gitlab-workhorse/main_test.go:657:22: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:658:4: var-naming: var requestIds should be requestIDs (revive)
-cmd/gitlab-workhorse/main_test.go:661:4: len: use require.Len (testifylint)
-cmd/gitlab-workhorse/main_test.go:673:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:703:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:791:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:858:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:870:25: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:895:25: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:928:5: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:936:4: var-naming: var originResourceUrl should be originResourceURL (revive)
-cmd/gitlab-workhorse/main_test.go:946:6: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:40:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:41:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:42:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:43:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:44:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:45:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:47:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:54:9: shadow: declaration of "err" shadows declaration at line 35 (govet)
-cmd/gitlab-workhorse/proxy_test.go:55:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:56:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:76:6: var-naming: var tsUrl should be tsURL (revive)
-cmd/gitlab-workhorse/proxy_test.go:82:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:83:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:84:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:86:6: shadow: declaration of "err" shadows declaration at line 77 (govet)
-cmd/gitlab-workhorse/proxy_test.go:87:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:103:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:104:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:107:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:131:51: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/proxy_test.go:157:45: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:60:2: exitAfterDefer: os.Exit will exit, and `defer gitaly.CloseConnections()` will not run (gocritic)
+cmd/gitlab-workhorse/main_test.go:107:24: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:132:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:143:24: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:156:66: wrapperFunc: use http.NotFoundHandler method in `http.HandlerFunc(http.NotFound)` (gocritic)
+cmd/gitlab-workhorse/main_test.go:163:23: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:186:24: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:212:25: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:243:23: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:246:25: unnecessary conversion (unconvert)
+cmd/gitlab-workhorse/main_test.go:263:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:315:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:369:41: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:416:38: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:431:38: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:445:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:450:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:455:61: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:457:3: bool-compare: use assert.True (testifylint)
+cmd/gitlab-workhorse/main_test.go:485:40: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:509:23: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:519:3: ifElseChain: rewrite if-else to switch statement (gocritic)
+cmd/gitlab-workhorse/main_test.go:565:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:575:21: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:578:3: var-naming: var requestIds should be requestIDs (revive)
+cmd/gitlab-workhorse/main_test.go:579:3: len: use require.Len (testifylint)
+cmd/gitlab-workhorse/main_test.go:651:4: var-naming: var propagatedRequestId should be propagatedRequestID (revive)
+cmd/gitlab-workhorse/main_test.go:658:22: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:659:4: var-naming: var requestIds should be requestIDs (revive)
+cmd/gitlab-workhorse/main_test.go:662:4: len: use require.Len (testifylint)
+cmd/gitlab-workhorse/main_test.go:674:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:792:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:871:25: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:896:25: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:937:4: var-naming: var originResourceUrl should be originResourceURL (revive)
+cmd/gitlab-workhorse/proxy_test.go:55:9: shadow: declaration of "err" shadows declaration at line 36 (govet)
+cmd/gitlab-workhorse/proxy_test.go:77:6: var-naming: var tsUrl should be tsURL (revive)
+cmd/gitlab-workhorse/proxy_test.go:87:6: shadow: declaration of "err" shadows declaration at line 78 (govet)
+cmd/gitlab-workhorse/proxy_test.go:132:51: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/proxy_test.go:158:45: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/raven.go:17:14: Error return value of `raven.SetDSN` is not checked (errcheck)
-cmd/gitlab-workhorse/sendfile_test.go:39:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/sendfile_test.go:69:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:81:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:89:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:107:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:108:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:285:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:286:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:359:7: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:361:7: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:365:5: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:394:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:402:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:408:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:409:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:410:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:413:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:414:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:510:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:521:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:527:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:530:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:536:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:537:4: go-require: do not use require in http handlers (testifylint)
+cmd/gitlab-workhorse/upload_test.go:372:4: require-error: for error assertions use require (testifylint)
+cmd/gitlab-workhorse/upload_test.go:377:4: require-error: for error assertions use require (testifylint)
 cmd/gitlab-zip-cat/main.go:1:1: package-comments: should have a package comment (revive)
 cmd/gitlab-zip-cat/main.go:19:5: exported: exported var Version should have comment or be unexported (revive)
 cmd/gitlab-zip-cat/main.go:66:20: Error return value of `reader.Close` is not checked (errcheck)
@@ -135,13 +81,10 @@ cmd/gitlab-zip-metadata/main.go:66:9: superfluous-else: if block ends with call
 internal/api/api.go:146:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
 internal/api/api.go:149:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
 internal/api/api.go:153:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
-internal/api/api_test.go:181:49: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/api/api_test.go:189:3: go-require: do not use require in http handlers (testifylint)
-internal/api/api_test.go:191:3: go-require: do not use require in http handlers (testifylint)
+internal/api/api_test.go:182:49: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/api/block_test.go:61:34: response body must be closed (bodyclose)
 internal/api/channel_settings.go:57:28: G402: TLS MinVersion too low. (gosec)
 internal/api/channel_settings_test.go:125:22: SA1019: dialer.TLSClientConfig.RootCAs.Subjects has been deprecated since Go 1.18: if s was returned by SystemCertPool, Subjects will not include the system roots. (staticcheck)
-internal/artifacts/entry_test.go:21:3: go-require: do not use require in http handlers (testifylint)
 internal/badgateway/roundtripper_test.go:76:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/badgateway/roundtripper_test.go:80:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/badgateway/roundtripper_test.go:81:3: go-require: require must only be used in the goroutine running the test function (testifylint)
@@ -181,24 +124,19 @@ internal/config/config.go:242:70: (*AzureCredentials).getURLOpener - result 1 (e
 internal/config/config.go:285:8: G101: Potential hardcoded credentials (gosec)
 internal/dependencyproxy/dependencyproxy.go:77: Function 'Inject' is too long (70 > 60) (funlen)
 internal/dependencyproxy/dependencyproxy.go:115:32: `cancelled` is a misspelling of `canceled` (misspell)
-internal/dependencyproxy/dependencyproxy_test.go:101:91: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:110:40: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:132:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:142:40: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:225:6: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:226:6: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:230:8: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:313:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:364:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:370:17: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:371:4: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:391:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:398:33: `artifically` is a misspelling of `artificially` (misspell)
-internal/dependencyproxy/dependencyproxy_test.go:399:59: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:410:27: response body must be closed (bodyclose)
-internal/dependencyproxy/dependencyproxy_test.go:412:3: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:413:3: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:421: internal/dependencyproxy/dependencyproxy_test.go:421: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "note that the timeout duration here is s..." (godox)
+internal/dependencyproxy/dependencyproxy_test.go:102:91: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:111:40: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:133:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:143:40: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:314:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:365:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:371:17: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:372:4: go-require: do not use assert.FailNow in http handlers (testifylint)
+internal/dependencyproxy/dependencyproxy_test.go:392:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:399:33: `artifically` is a misspelling of `artificially` (misspell)
+internal/dependencyproxy/dependencyproxy_test.go:400:59: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:411:27: response body must be closed (bodyclose)
+internal/dependencyproxy/dependencyproxy_test.go:422: internal/dependencyproxy/dependencyproxy_test.go:422: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "note that the timeout duration here is s..." (godox)
 internal/git/archive.go:35:2: var-naming: struct field CommitId should be CommitID (revive)
 internal/git/archive.go:43:2: exported: exported var SendArchive should have comment or be unexported (revive)
 internal/git/archive.go:53: Function 'Inject' has too many statements (47 > 40) (funlen)
@@ -318,102 +256,36 @@ internal/redis/redis_test.go:66:15: `initialise` is a misspelling of `initialize
 internal/redis/redis_test.go:105:15: `initialise` is a misspelling of `initialize` (misspell)
 internal/rejectmethods/middleware_test.go:13:58: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/senddata/contentprocessor/contentprocessor.go:136:35: response body must be closed (bodyclose)
-internal/senddata/contentprocessor/contentprocessor_test.go:22:3: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:222:5: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:241:3: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:258:3: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:275:3: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:320:4: go-require: do not use require in http handlers (testifylint)
 internal/sendfile/sendfile_test.go:180:34: response body must be closed (bodyclose)
 internal/sendurl/sendurl.go:69:33: unused-parameter: parameter 'req' seems to be unused, consider removing or renaming it as _ (revive)
 internal/sendurl/sendurl.go:99: Function 'Inject' has too many statements (47 > 40) (funlen)
 internal/sendurl/sendurl.go:226:45: response body must be closed (bodyclose)
-internal/sendurl/sendurl_test.go:28:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:40:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:53:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:56:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:57:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:60:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:71:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:74:22: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/sendurl/sendurl_test.go:220:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:231:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:238:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:241:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:242:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:244:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:31:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:32:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:137:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:138:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:157:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:158:3: go-require: do not use require in http handlers (testifylint)
+internal/sendurl/sendurl_test.go:75:22: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/testhelper/gitaly.go:277: 277-296 lines are duplicate of `internal/testhelper/gitaly.go:315-336` (dupl)
 internal/testhelper/gitaly.go:315: 315-336 lines are duplicate of `internal/testhelper/gitaly.go:338-357` (dupl)
 internal/testhelper/gitaly.go:338: 338-357 lines are duplicate of `internal/testhelper/gitaly.go:277-296` (dupl)
 internal/testhelper/testhelper.go:18:2: import 'github.com/dlclark/regexp2' is not allowed from list 'main' (depguard)
 internal/testhelper/testhelper.go:243:21: G302: Expect file permissions to be 0600 or less (gosec)
-internal/upload/artifacts_store_test.go:76:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:79:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:80:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:92:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:93:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:140:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:162:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:187:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:191:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:216:41: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:220:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:268:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:308:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_upload_test.go:48:1: cognitive complexity 32 of func `testArtifactsUploadServer` is high (> 20) (gocognit)
-internal/upload/artifacts_upload_test.go:65:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:203:10: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_upload_test.go:205:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:208:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:210:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:211:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:212:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:213:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:234:8: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_upload_test.go:236:4: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:239:4: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:241:4: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:242:4: go-require: do not use require in http handlers (testifylint)
+internal/upload/artifacts_store_test.go:141:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:163:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:192:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:217:41: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:221:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:269:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:309:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_upload_test.go:49:1: cognitive complexity 32 of func `testArtifactsUploadServer` is high (> 20) (gocognit)
+internal/upload/artifacts_upload_test.go:204:10: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_upload_test.go:235:8: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/artifacts_uploader.go:62: Function 'generateMetadataFromZip' is too long (66 > 60) (funlen)
 internal/upload/artifacts_uploader.go:82:11: G204: Subprocess launched with a potential tainted input or cmd arguments (gosec)
-internal/upload/body_uploader_test.go:80:33: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/body_uploader_test.go:81:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:104:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:106:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:108:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:109:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:110:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:111:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:113:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:114:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:115:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:116:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:119:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:127:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:130:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:131:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:132:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:133:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:134:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:135:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:136:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:137:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:138:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:142:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:155:55: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/body_uploader_test.go:81:33: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/body_uploader_test.go:156:55: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/destination/destination.go:72: internal/upload/destination/destination.go:72: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: remove `data` these once rails ful..." (godox)
 internal/upload/destination/destination.go:117: Function 'Upload' has too many statements (48 > 40) (funlen)
 internal/upload/destination/multi_hash.go:4:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec)
 internal/upload/destination/multi_hash.go:5:2: G505: Blocklisted import crypto/sha1: weak cryptographic primitive (gosec)
-internal/upload/destination/objectstore/multipart_test.go:25:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/destination/objectstore/object_test.go:123:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/destination/objectstore/object_test.go:126:4: go-require: do not use require in http handlers (testifylint)
+internal/upload/destination/objectstore/object_test.go:124:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/destination/objectstore/object_test.go:127:4: go-require: do not use assert.FailNow in http handlers (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:105:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:109:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:110:4: go-require: require must only be used in the goroutine running the test function (testifylint)
@@ -426,41 +298,11 @@ internal/upload/destination/objectstore/uploader.go:95:12: G401: Use of weak cry
 internal/upload/exif/exif.go:103:10: G204: Subprocess launched with variable (gosec)
 internal/upload/uploads.go:62:16: Error return value of `fmt.Fprintln` is not checked (errcheck)
 internal/upload/uploads.go:101:15: Error return value of `fmt.Fprintln` is not checked (errcheck)
-internal/upload/uploads_test.go:60:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:63:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:64:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:95:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:96:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:98:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:99:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:100:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:103:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:105:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:106:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:107:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:116:4: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:121:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:122:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:187:5: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:404:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/uploads_test.go:487:43: unused-parameter: parameter 'rw' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/uploads_test.go:521:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:524:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:525:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:526:3: negative-positive: use require.Positive (testifylint)
-internal/upload/uploads_test.go:539:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:542:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:543:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:544:3: negative-positive: use require.Positive (testifylint)
-internal/upload/uploads_test.go:557:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:560:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:561:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:572:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/uploads_test.go:574:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/handlers_test.go:30:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/handlers_test.go:31:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/handlers_test.go:48:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/handlers_test.go:49:3: go-require: do not use require in http handlers (testifylint)
+internal/upload/uploads_test.go:405:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/uploads_test.go:488:43: unused-parameter: parameter 'rw' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/uploads_test.go:527:3: negative-positive: use assert.Positive (testifylint)
+internal/upload/uploads_test.go:545:3: negative-positive: use assert.Positive (testifylint)
+internal/upload/uploads_test.go:573:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upstream/roundtripper/roundtripper.go:53:53: unused-parameter: parameter 'network' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upstream/roundtripper/roundtripper.go:57:53: unused-parameter: parameter 'network' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upstream/roundtripper/roundtripper_test.go:49:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
@@ -470,10 +312,4 @@ internal/upstream/routes.go:150:68: `(*upstream).wsRoute` - `matchers` always re
 internal/upstream/routes.go:210: Function 'configureRoutes' is too long (235 > 60) (funlen)
 internal/upstream/routes.go:383: internal/upstream/routes.go:383: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: We should probably not return a HT..." (godox)
 internal/upstream/upstream.go:116: internal/upstream/upstream.go:116: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: move to LabKit https://gitlab.com/..." (godox)
-internal/upstream/upstream_test.go:266:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/upstream_test.go:267:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/upstream_test.go:324:5: go-require: do not use require in http handlers (testifylint)
-internal/upstream/upstream_test.go:325:5: go-require: do not use require in http handlers (testifylint)
 internal/zipartifacts/open_archive.go:78:28: response body must be closed (bodyclose)
-internal/zipartifacts/open_archive_test.go:121:3: go-require: do not use require in http handlers (testifylint)
-internal/zipartifacts/open_archive_test.go:122:3: go-require: do not use require in http handlers (testifylint)
diff --git a/workhorse/_support/lint_last_known_acceptable_go1.22.txt b/workhorse/_support/lint_last_known_acceptable_go1.22.txt
index 8ff5f4d2865088f7691bb5048092546052c8de74..dfe42fea79bbce9695fcd33940310e38a91400db 100644
--- a/workhorse/_support/lint_last_known_acceptable_go1.22.txt
+++ b/workhorse/_support/lint_last_known_acceptable_go1.22.txt
@@ -2,13 +2,7 @@ cmd/gitlab-resize-image/main.go:1:1: package-comments: should have a package com
 cmd/gitlab-resize-image/png/reader.go:1:1: package-comments: should have a package comment (revive)
 cmd/gitlab-resize-image/png/reader.go:26:1: exported: exported function NewReader should have comment or be unexported (revive)
 cmd/gitlab-resize-image/png/reader.go:78:17: var-declaration: should omit type []byte from declaration of var magicBytes; it will be inferred from the right-hand side (revive)
-cmd/gitlab-workhorse/authorization_test.go:71:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/authorization_test.go:73:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:111:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:114:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:115:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:116:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/authorization_test.go:120:3: go-require: do not use require in http handlers (testifylint)
+cmd/gitlab-workhorse/authorization_test.go:72:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/config_test.go:191: cmd/gitlab-workhorse/config_test.go:191: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO this is meant to be 50*time.Second ..." (godox)
 cmd/gitlab-workhorse/config_test.go:333:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/jobs_test.go:37:29: response body must be closed (bodyclose)
@@ -29,97 +23,49 @@ cmd/gitlab-workhorse/main.go:211:6: shadow: declaration of "err" shadows declara
 cmd/gitlab-workhorse/main.go:232:5: shadow: declaration of "err" shadows declaration at line 168 (govet)
 cmd/gitlab-workhorse/main.go:240:26: Error return value of `accessCloser.Close` is not checked (errcheck)
 cmd/gitlab-workhorse/main.go:264:10: G112: Potential Slowloris Attack because ReadHeaderTimeout is not configured in the http.Server (gosec)
-cmd/gitlab-workhorse/main_test.go:59:2: exitAfterDefer: os.Exit will exit, and `defer gitaly.CloseConnections()` will not run (gocritic)
-cmd/gitlab-workhorse/main_test.go:92:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:106:24: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:131:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:142:24: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:155:66: wrapperFunc: use http.NotFoundHandler method in `http.HandlerFunc(http.NotFound)` (gocritic)
-cmd/gitlab-workhorse/main_test.go:162:23: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:185:24: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:211:25: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:232:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:235:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:242:23: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:245:25: unnecessary conversion (unconvert)
-cmd/gitlab-workhorse/main_test.go:262:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:314:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:368:41: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:415:38: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:430:38: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:444:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:449:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:454:61: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:456:3: bool-compare: use require.True (testifylint)
-cmd/gitlab-workhorse/main_test.go:459:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:484:40: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:501:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:508:23: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:518:3: ifElseChain: rewrite if-else to switch statement (gocritic)
-cmd/gitlab-workhorse/main_test.go:527:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:564:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:574:21: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:577:3: var-naming: var requestIds should be requestIDs (revive)
-cmd/gitlab-workhorse/main_test.go:578:3: len: use require.Len (testifylint)
-cmd/gitlab-workhorse/main_test.go:650:4: var-naming: var propagatedRequestId should be propagatedRequestID (revive)
-cmd/gitlab-workhorse/main_test.go:657:22: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:658:4: var-naming: var requestIds should be requestIDs (revive)
-cmd/gitlab-workhorse/main_test.go:661:4: len: use require.Len (testifylint)
-cmd/gitlab-workhorse/main_test.go:673:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:703:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:791:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/main_test.go:858:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:870:25: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:895:25: response body must be closed (bodyclose)
-cmd/gitlab-workhorse/main_test.go:928:5: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/main_test.go:936:4: var-naming: var originResourceUrl should be originResourceURL (revive)
-cmd/gitlab-workhorse/main_test.go:946:6: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:40:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:41:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:42:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:43:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:44:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:45:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:47:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:54:9: shadow: declaration of "err" shadows declaration at line 35 (govet)
-cmd/gitlab-workhorse/proxy_test.go:55:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:56:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:76:6: var-naming: var tsUrl should be tsURL (revive)
-cmd/gitlab-workhorse/proxy_test.go:82:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:83:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:84:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:86:6: shadow: declaration of "err" shadows declaration at line 77 (govet)
-cmd/gitlab-workhorse/proxy_test.go:87:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:103:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:104:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:107:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/proxy_test.go:131:51: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-cmd/gitlab-workhorse/proxy_test.go:157:45: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:60:2: exitAfterDefer: os.Exit will exit, and `defer gitaly.CloseConnections()` will not run (gocritic)
+cmd/gitlab-workhorse/main_test.go:107:24: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:132:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:143:24: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:156:66: wrapperFunc: use http.NotFoundHandler method in `http.HandlerFunc(http.NotFound)` (gocritic)
+cmd/gitlab-workhorse/main_test.go:163:23: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:186:24: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:212:25: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:243:23: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:246:25: unnecessary conversion (unconvert)
+cmd/gitlab-workhorse/main_test.go:263:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:315:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:369:41: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:416:38: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:431:38: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:445:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:450:65: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:455:61: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:457:3: bool-compare: use assert.True (testifylint)
+cmd/gitlab-workhorse/main_test.go:485:40: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:509:23: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:519:3: ifElseChain: rewrite if-else to switch statement (gocritic)
+cmd/gitlab-workhorse/main_test.go:565:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:575:21: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:578:3: var-naming: var requestIds should be requestIDs (revive)
+cmd/gitlab-workhorse/main_test.go:579:3: len: use require.Len (testifylint)
+cmd/gitlab-workhorse/main_test.go:651:4: var-naming: var propagatedRequestId should be propagatedRequestID (revive)
+cmd/gitlab-workhorse/main_test.go:658:22: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:659:4: var-naming: var requestIds should be requestIDs (revive)
+cmd/gitlab-workhorse/main_test.go:662:4: len: use require.Len (testifylint)
+cmd/gitlab-workhorse/main_test.go:674:94: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:792:16: unused-parameter: parameter 't' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/main_test.go:871:25: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:896:25: response body must be closed (bodyclose)
+cmd/gitlab-workhorse/main_test.go:937:4: var-naming: var originResourceUrl should be originResourceURL (revive)
+cmd/gitlab-workhorse/proxy_test.go:55:9: shadow: declaration of "err" shadows declaration at line 36 (govet)
+cmd/gitlab-workhorse/proxy_test.go:77:6: var-naming: var tsUrl should be tsURL (revive)
+cmd/gitlab-workhorse/proxy_test.go:87:6: shadow: declaration of "err" shadows declaration at line 78 (govet)
+cmd/gitlab-workhorse/proxy_test.go:132:51: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+cmd/gitlab-workhorse/proxy_test.go:158:45: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 cmd/gitlab-workhorse/raven.go:17:14: Error return value of `raven.SetDSN` is not checked (errcheck)
-cmd/gitlab-workhorse/sendfile_test.go:39:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/sendfile_test.go:69:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:81:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:89:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:107:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:108:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:285:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:286:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:359:7: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:361:7: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:365:5: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:394:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:402:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:408:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:409:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:410:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:413:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:414:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:510:3: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:521:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:527:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:530:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:536:4: go-require: do not use require in http handlers (testifylint)
-cmd/gitlab-workhorse/upload_test.go:537:4: go-require: do not use require in http handlers (testifylint)
+cmd/gitlab-workhorse/upload_test.go:372:4: require-error: for error assertions use require (testifylint)
+cmd/gitlab-workhorse/upload_test.go:377:4: require-error: for error assertions use require (testifylint)
 cmd/gitlab-zip-cat/main.go:1:1: package-comments: should have a package comment (revive)
 cmd/gitlab-zip-cat/main.go:19:5: exported: exported var Version should have comment or be unexported (revive)
 cmd/gitlab-zip-cat/main.go:66:20: Error return value of `reader.Close` is not checked (errcheck)
@@ -135,13 +81,10 @@ cmd/gitlab-zip-metadata/main.go:66:9: superfluous-else: if block ends with call
 internal/api/api.go:146:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
 internal/api/api.go:149:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
 internal/api/api.go:153:2: var-naming: don't use ALL_CAPS in Go names; use CamelCase (revive)
-internal/api/api_test.go:181:49: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/api/api_test.go:189:3: go-require: do not use require in http handlers (testifylint)
-internal/api/api_test.go:191:3: go-require: do not use require in http handlers (testifylint)
+internal/api/api_test.go:182:49: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/api/block_test.go:61:34: response body must be closed (bodyclose)
 internal/api/channel_settings.go:57:28: G402: TLS MinVersion too low. (gosec)
 internal/api/channel_settings_test.go:125:22: SA1019: dialer.TLSClientConfig.RootCAs.Subjects has been deprecated since Go 1.18: if s was returned by [SystemCertPool], Subjects will not include the system roots. (staticcheck)
-internal/artifacts/entry_test.go:21:3: go-require: do not use require in http handlers (testifylint)
 internal/badgateway/roundtripper_test.go:76:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/badgateway/roundtripper_test.go:80:3: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/badgateway/roundtripper_test.go:81:3: go-require: require must only be used in the goroutine running the test function (testifylint)
@@ -181,24 +124,19 @@ internal/config/config.go:242:70: (*AzureCredentials).getURLOpener - result 1 (e
 internal/config/config.go:285:8: G101: Potential hardcoded credentials (gosec)
 internal/dependencyproxy/dependencyproxy.go:77: Function 'Inject' is too long (70 > 60) (funlen)
 internal/dependencyproxy/dependencyproxy.go:115:32: `cancelled` is a misspelling of `canceled` (misspell)
-internal/dependencyproxy/dependencyproxy_test.go:101:91: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:110:40: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:132:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:142:40: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:225:6: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:226:6: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:230:8: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:313:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:364:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:370:17: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:371:4: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:391:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:398:33: `artifically` is a misspelling of `artificially` (misspell)
-internal/dependencyproxy/dependencyproxy_test.go:399:59: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/dependencyproxy/dependencyproxy_test.go:410:27: response body must be closed (bodyclose)
-internal/dependencyproxy/dependencyproxy_test.go:412:3: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:413:3: go-require: do not use require in http handlers (testifylint)
-internal/dependencyproxy/dependencyproxy_test.go:421: internal/dependencyproxy/dependencyproxy_test.go:421: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "note that the timeout duration here is s..." (godox)
+internal/dependencyproxy/dependencyproxy_test.go:102:91: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:111:40: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:133:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:143:40: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:314:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:365:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:371:17: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:372:4: go-require: do not use assert.FailNow in http handlers (testifylint)
+internal/dependencyproxy/dependencyproxy_test.go:392:90: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:399:33: `artifically` is a misspelling of `artificially` (misspell)
+internal/dependencyproxy/dependencyproxy_test.go:400:59: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/dependencyproxy/dependencyproxy_test.go:411:27: response body must be closed (bodyclose)
+internal/dependencyproxy/dependencyproxy_test.go:422: internal/dependencyproxy/dependencyproxy_test.go:422: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "note that the timeout duration here is s..." (godox)
 internal/git/archive.go:35:2: var-naming: struct field CommitId should be CommitID (revive)
 internal/git/archive.go:43:2: exported: exported var SendArchive should have comment or be unexported (revive)
 internal/git/archive.go:53: Function 'Inject' has too many statements (47 > 40) (funlen)
@@ -318,102 +256,36 @@ internal/redis/redis_test.go:66:15: `initialise` is a misspelling of `initialize
 internal/redis/redis_test.go:105:15: `initialise` is a misspelling of `initialize` (misspell)
 internal/rejectmethods/middleware_test.go:13:58: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/senddata/contentprocessor/contentprocessor.go:136:35: response body must be closed (bodyclose)
-internal/senddata/contentprocessor/contentprocessor_test.go:22:3: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:222:5: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:241:3: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:258:3: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:275:3: go-require: do not use require in http handlers (testifylint)
-internal/senddata/contentprocessor/contentprocessor_test.go:320:4: go-require: do not use require in http handlers (testifylint)
 internal/sendfile/sendfile_test.go:180:34: response body must be closed (bodyclose)
 internal/sendurl/sendurl.go:69:33: unused-parameter: parameter 'req' seems to be unused, consider removing or renaming it as _ (revive)
 internal/sendurl/sendurl.go:99: Function 'Inject' has too many statements (47 > 40) (funlen)
 internal/sendurl/sendurl.go:226:45: response body must be closed (bodyclose)
-internal/sendurl/sendurl_test.go:28:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:40:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:53:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:56:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:57:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:60:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:71:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:74:22: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/sendurl/sendurl_test.go:220:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:231:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:238:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:241:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:242:3: go-require: do not use require in http handlers (testifylint)
-internal/sendurl/sendurl_test.go:244:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:31:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:32:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:137:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:138:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:157:3: go-require: do not use require in http handlers (testifylint)
-internal/staticpages/error_pages_test.go:158:3: go-require: do not use require in http handlers (testifylint)
+internal/sendurl/sendurl_test.go:75:22: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/testhelper/gitaly.go:277: 277-296 lines are duplicate of `internal/testhelper/gitaly.go:315-336` (dupl)
 internal/testhelper/gitaly.go:315: 315-336 lines are duplicate of `internal/testhelper/gitaly.go:338-357` (dupl)
 internal/testhelper/gitaly.go:338: 338-357 lines are duplicate of `internal/testhelper/gitaly.go:277-296` (dupl)
 internal/testhelper/testhelper.go:18:2: import 'github.com/dlclark/regexp2' is not allowed from list 'main' (depguard)
 internal/testhelper/testhelper.go:243:21: G302: Expect file permissions to be 0600 or less (gosec)
-internal/upload/artifacts_store_test.go:76:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:79:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:80:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:92:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:93:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:140:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:162:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:187:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_store_test.go:191:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:216:41: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:220:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:268:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_store_test.go:308:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_upload_test.go:48:1: cognitive complexity 32 of func `testArtifactsUploadServer` is high (> 20) (gocognit)
-internal/upload/artifacts_upload_test.go:65:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:203:10: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_upload_test.go:205:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:208:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:210:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:211:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:212:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:213:6: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:234:8: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/artifacts_upload_test.go:236:4: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:239:4: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:241:4: go-require: do not use require in http handlers (testifylint)
-internal/upload/artifacts_upload_test.go:242:4: go-require: do not use require in http handlers (testifylint)
+internal/upload/artifacts_store_test.go:141:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:163:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:192:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:217:41: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:221:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:269:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_store_test.go:309:28: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_upload_test.go:49:1: cognitive complexity 32 of func `testArtifactsUploadServer` is high (> 20) (gocognit)
+internal/upload/artifacts_upload_test.go:204:10: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/artifacts_upload_test.go:235:8: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/artifacts_uploader.go:62: Function 'generateMetadataFromZip' is too long (66 > 60) (funlen)
 internal/upload/artifacts_uploader.go:82:11: G204: Subprocess launched with a potential tainted input or cmd arguments (gosec)
-internal/upload/body_uploader_test.go:80:33: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/body_uploader_test.go:81:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:104:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:106:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:108:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:109:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:110:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:111:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:113:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:114:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:115:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:116:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:119:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:127:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:130:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:131:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:132:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:133:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:134:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:135:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:136:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:137:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:138:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:142:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/body_uploader_test.go:155:55: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/body_uploader_test.go:81:33: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/body_uploader_test.go:156:55: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upload/destination/destination.go:72: internal/upload/destination/destination.go:72: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: remove `data` these once rails ful..." (godox)
 internal/upload/destination/destination.go:117: Function 'Upload' has too many statements (48 > 40) (funlen)
 internal/upload/destination/multi_hash.go:4:2: G501: Blocklisted import crypto/md5: weak cryptographic primitive (gosec)
 internal/upload/destination/multi_hash.go:5:2: G505: Blocklisted import crypto/sha1: weak cryptographic primitive (gosec)
-internal/upload/destination/objectstore/multipart_test.go:25:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/destination/objectstore/object_test.go:123:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/destination/objectstore/object_test.go:126:4: go-require: do not use require in http handlers (testifylint)
+internal/upload/destination/objectstore/object_test.go:124:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/destination/objectstore/object_test.go:127:4: go-require: do not use assert.FailNow in http handlers (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:105:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:109:4: go-require: require must only be used in the goroutine running the test function (testifylint)
 internal/upload/destination/objectstore/s3_object_test.go:110:4: go-require: require must only be used in the goroutine running the test function (testifylint)
@@ -426,41 +298,11 @@ internal/upload/destination/objectstore/uploader.go:95:12: G401: Use of weak cry
 internal/upload/exif/exif.go:103:10: G204: Subprocess launched with variable (gosec)
 internal/upload/uploads.go:62:16: Error return value of `fmt.Fprintln` is not checked (errcheck)
 internal/upload/uploads.go:101:15: Error return value of `fmt.Fprintln` is not checked (errcheck)
-internal/upload/uploads_test.go:60:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:63:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:64:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:95:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:96:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:98:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:99:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:100:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:103:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:105:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:106:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:107:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:116:4: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:121:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:122:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:187:5: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:404:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/uploads_test.go:487:43: unused-parameter: parameter 'rw' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/uploads_test.go:521:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:524:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:525:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:526:3: negative-positive: use require.Positive (testifylint)
-internal/upload/uploads_test.go:539:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:542:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:543:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:544:3: negative-positive: use require.Positive (testifylint)
-internal/upload/uploads_test.go:557:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:560:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:561:3: go-require: do not use require in http handlers (testifylint)
-internal/upload/uploads_test.go:572:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
-internal/upload/uploads_test.go:574:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/handlers_test.go:30:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/handlers_test.go:31:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/handlers_test.go:48:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/handlers_test.go:49:3: go-require: do not use require in http handlers (testifylint)
+internal/upload/uploads_test.go:405:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/uploads_test.go:488:43: unused-parameter: parameter 'rw' seems to be unused, consider removing or renaming it as _ (revive)
+internal/upload/uploads_test.go:527:3: negative-positive: use assert.Positive (testifylint)
+internal/upload/uploads_test.go:545:3: negative-positive: use assert.Positive (testifylint)
+internal/upload/uploads_test.go:573:67: unused-parameter: parameter 'w' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upstream/roundtripper/roundtripper.go:53:53: unused-parameter: parameter 'network' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upstream/roundtripper/roundtripper.go:57:53: unused-parameter: parameter 'network' seems to be unused, consider removing or renaming it as _ (revive)
 internal/upstream/roundtripper/roundtripper_test.go:49:72: unused-parameter: parameter 'r' seems to be unused, consider removing or renaming it as _ (revive)
@@ -470,10 +312,4 @@ internal/upstream/routes.go:150:68: `(*upstream).wsRoute` - `matchers` always re
 internal/upstream/routes.go:210: Function 'configureRoutes' is too long (235 > 60) (funlen)
 internal/upstream/routes.go:383: internal/upstream/routes.go:383: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: We should probably not return a HT..." (godox)
 internal/upstream/upstream.go:116: internal/upstream/upstream.go:116: Line contains TODO/BUG/FIXME/NOTE/OPTIMIZE/HACK: "TODO: move to LabKit https://gitlab.com/..." (godox)
-internal/upstream/upstream_test.go:266:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/upstream_test.go:267:3: go-require: do not use require in http handlers (testifylint)
-internal/upstream/upstream_test.go:324:5: go-require: do not use require in http handlers (testifylint)
-internal/upstream/upstream_test.go:325:5: go-require: do not use require in http handlers (testifylint)
 internal/zipartifacts/open_archive.go:78:28: response body must be closed (bodyclose)
-internal/zipartifacts/open_archive_test.go:121:3: go-require: do not use require in http handlers (testifylint)
-internal/zipartifacts/open_archive_test.go:122:3: go-require: do not use require in http handlers (testifylint)
diff --git a/workhorse/cmd/gitlab-workhorse/authorization_test.go b/workhorse/cmd/gitlab-workhorse/authorization_test.go
index 14f7f66dd1216f97a754da5ae4f03cd9edc11dfa..07c8a76c3fddd4fb5696ed1a9e6e6a183b4df7de 100644
--- a/workhorse/cmd/gitlab-workhorse/authorization_test.go
+++ b/workhorse/cmd/gitlab-workhorse/authorization_test.go
@@ -11,6 +11,7 @@ import (
 	"gitlab.com/gitlab-org/labkit/correlation"
 
 	"github.com/golang-jwt/jwt/v5"
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/api"
@@ -70,7 +71,7 @@ func TestPreAuthorizeJsonFailure(t *testing.T) {
 func TestPreAuthorizeContentTypeFailure(t *testing.T) {
 	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		_, err := w.Write([]byte(`{"hello":"world"}`))
-		require.NoError(t, err, "write auth response")
+		assert.NoError(t, err, "write auth response")
 	}))
 	defer ts.Close()
 
@@ -108,16 +109,16 @@ func TestPreAuthorizeJWT(t *testing.T) {
 
 			return secretBytes, nil
 		})
-		require.NoError(t, err, "decode token")
+		assert.NoError(t, err, "decode token")
 
 		claims, ok := token.Claims.(jwt.MapClaims)
-		require.True(t, ok, "claims cast")
-		require.True(t, token.Valid, "JWT token valid")
-		require.Equal(t, "gitlab-workhorse", claims["iss"], "JWT token issuer")
+		assert.True(t, ok, "claims cast")
+		assert.True(t, token.Valid, "JWT token valid")
+		assert.Equal(t, "gitlab-workhorse", claims["iss"], "JWT token issuer")
 
 		w.Header().Set("Content-Type", api.ResponseContentType)
 		_, err = w.Write([]byte(`{"hello":"world"}`))
-		require.NoError(t, err, "write auth response")
+		assert.NoError(t, err, "write auth response")
 	}))
 	defer ts.Close()
 
diff --git a/workhorse/cmd/gitlab-workhorse/main_test.go b/workhorse/cmd/gitlab-workhorse/main_test.go
index 9d11d00bd7be3d64db463d00bf189fdc5febed3f..5809cd7664918690f0d22c52bab71e09f2ceeb82 100644
--- a/workhorse/cmd/gitlab-workhorse/main_test.go
+++ b/workhorse/cmd/gitlab-workhorse/main_test.go
@@ -21,6 +21,7 @@ import (
 	"time"
 
 	"github.com/sirupsen/logrus"
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
 	"gitlab.com/gitlab-org/labkit/log"
@@ -89,7 +90,7 @@ func TestRegularProjectsAPI(t *testing.T) {
 
 	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, _ *http.Request) {
 		_, err := w.Write([]byte(apiResponse))
-		require.NoError(t, err)
+		assert.NoError(t, err)
 	})
 	defer ts.Close()
 
@@ -229,10 +230,10 @@ This is a static error page for code 499
 		upstreamError := "499"
 		// This is the point of the test: the size of the upstream response body
 		// should be overridden.
-		require.NotEqual(t, len(upstreamError), len(errorPageBody))
+		assert.NotEqual(t, len(upstreamError), len(errorPageBody))
 		w.WriteHeader(499)
 		_, err := w.Write([]byte(upstreamError))
-		require.NoError(t, err)
+		assert.NoError(t, err)
 	})
 	defer ts.Close()
 
@@ -453,10 +454,10 @@ func TestSendURLForArtifacts(t *testing.T) {
 
 	rawHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		hj, ok := w.(http.Hijacker)
-		require.Equal(t, true, ok)
+		assert.Equal(t, true, ok)
 
 		conn, buf, err := hj.Hijack()
-		require.NoError(t, err)
+		assert.NoError(t, err)
 		defer conn.Close()
 		defer buf.Flush()
 
@@ -498,7 +499,7 @@ func TestApiContentTypeBlock(t *testing.T) {
 	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, _ *http.Request) {
 		w.Header().Set("Content-Type", api.ResponseContentType)
 		_, err := w.Write([]byte(wrongResponse))
-		require.NoError(t, err, "write upstream response")
+		assert.NoError(t, err, "write upstream response")
 	})
 	defer ts.Close()
 
@@ -524,7 +525,7 @@ func TestAPIFalsePositivesAreProxied(t *testing.T) {
 		} else {
 			w.Header().Set("Content-Type", "text/html")
 			_, err := w.Write(goodResponse)
-			require.NoError(t, err)
+			assert.NoError(t, err)
 		}
 	})
 	defer ts.Close()
@@ -700,7 +701,7 @@ func newBranch() string {
 
 func testAuthServer(t *testing.T, url *regexp.Regexp, params url.Values, code int, body interface{}) *httptest.Server {
 	ts := testhelper.TestServerWithHandler(url, func(w http.ResponseWriter, r *http.Request) {
-		require.NotEmpty(t, r.Header.Get("X-Request-Id"))
+		assert.NotEmpty(t, r.Header.Get("X-Request-Id"))
 
 		// return a 204 No Content response if we don't receive the JWT header
 		if r.Header.Get(secret.RequestHeader) == "" {
@@ -855,7 +856,7 @@ This is a static error page for code 503
 		w.Header().Set("X-Gitlab-Custom-Error", "1")
 		w.WriteHeader(503)
 		_, err := w.Write([]byte(apiResponse))
-		require.NoError(t, err)
+		assert.NoError(t, err)
 	})
 	defer ts.Close()
 
@@ -925,7 +926,7 @@ func TestDependencyProxyInjector(t *testing.T) {
 			originResource := "/origin_resource"
 
 			originResourceServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-				require.Equal(t, originResource, r.URL.String())
+				assert.Equal(t, originResource, r.URL.String())
 
 				w.Header().Set("Content-Length", strconv.Itoa(bodyLength))
 
@@ -943,7 +944,7 @@ func TestDependencyProxyInjector(t *testing.T) {
 				case "/base/upload/authorize":
 					w.Header().Set("Content-Type", api.ResponseContentType)
 					_, err := fmt.Fprintf(w, `{"TempPath":"%s"}`, t.TempDir())
-					require.NoError(t, err)
+					assert.NoError(t, err)
 				case "/base/upload":
 					w.WriteHeader(tc.finalizeStatus)
 				default:
diff --git a/workhorse/cmd/gitlab-workhorse/proxy_test.go b/workhorse/cmd/gitlab-workhorse/proxy_test.go
index 6dd1354e618fa8e3a8782162af712851ac3060e0..8569e0fcd3e93f377301ef403716bb767bd68080 100644
--- a/workhorse/cmd/gitlab-workhorse/proxy_test.go
+++ b/workhorse/cmd/gitlab-workhorse/proxy_test.go
@@ -18,6 +18,7 @@ import (
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/testhelper"
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/upstream/roundtripper"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
 
@@ -37,14 +38,14 @@ func TestProxyRequest(t *testing.T) {
 
 	urlRegexp := regexp.MustCompile(fmt.Sprintf(`%s\z`, inboundURL.Path))
 	ts := testhelper.TestServerWithHandler(urlRegexp, func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "POST", r.Method, "method")
-		require.Equal(t, "test", r.Header.Get("Custom-Header"), "custom header")
-		require.Equal(t, testVersion, r.Header.Get("Gitlab-Workhorse"), "version header")
-		require.Equal(t, inboundURL.Host, r.Host, "sent host header")
-		require.Empty(t, r.Header.Get("X-Forwarded-Host"), "X-Forwarded-Host header")
-		require.Empty(t, r.Header.Get("Forwarded"), "Forwarded header")
-
-		require.Regexp(
+		assert.Equal(t, "POST", r.Method, "method")
+		assert.Equal(t, "test", r.Header.Get("Custom-Header"), "custom header")
+		assert.Equal(t, testVersion, r.Header.Get("Gitlab-Workhorse"), "version header")
+		assert.Equal(t, inboundURL.Host, r.Host, "sent host header")
+		assert.Empty(t, r.Header.Get("X-Forwarded-Host"), "X-Forwarded-Host header")
+		assert.Empty(t, r.Header.Get("Forwarded"), "Forwarded header")
+
+		assert.Regexp(
 			t,
 			regexp.MustCompile(`\A1`),
 			r.Header.Get("Gitlab-Workhorse-Proxy-Start"),
@@ -52,8 +53,8 @@ func TestProxyRequest(t *testing.T) {
 		)
 
 		body, err := io.ReadAll(r.Body)
-		require.NoError(t, err, "read body")
-		require.Equal(t, "REQUEST", string(body), "body contents")
+		assert.NoError(t, err, "read body")
+		assert.Equal(t, "REQUEST", string(body), "body contents")
 
 		w.Header().Set("Custom-Response-Header", "test")
 		w.WriteHeader(202)
@@ -79,12 +80,12 @@ func TestProxyWithForcedTargetHostHeader(t *testing.T) {
 
 	urlRegexp := regexp.MustCompile(fmt.Sprintf(`%s\z`, inboundURL.Path))
 	ts := testhelper.TestServerWithHandler(urlRegexp, func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, tsUrl.Host, r.Host, "upstream host header")
-		require.Equal(t, inboundURL.Host, r.Header.Get("X-Forwarded-Host"), "X-Forwarded-Host header")
-		require.Equal(t, fmt.Sprintf("host=%s", inboundURL.Host), r.Header.Get("Forwarded"), "Forwarded header")
+		assert.Equal(t, tsUrl.Host, r.Host, "upstream host header")
+		assert.Equal(t, inboundURL.Host, r.Header.Get("X-Forwarded-Host"), "X-Forwarded-Host header")
+		assert.Equal(t, fmt.Sprintf("host=%s", inboundURL.Host), r.Header.Get("Forwarded"), "Forwarded header")
 
 		_, err := w.Write([]byte(`ok`))
-		require.NoError(t, err, "write ok response")
+		assert.NoError(t, err, "write ok response")
 	})
 	tsUrl, err = url.Parse(ts.URL)
 	require.NoError(t, err, "parse testserver URL")
@@ -100,11 +101,11 @@ func TestProxyWithForcedTargetHostHeader(t *testing.T) {
 
 func TestProxyWithCustomHeaders(t *testing.T) {
 	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`/url/path\z`), func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "value", r.Header.Get("Custom-Header"), "custom proxy header")
-		require.Equal(t, testVersion, r.Header.Get("Gitlab-Workhorse"), "version header")
+		assert.Equal(t, "value", r.Header.Get("Custom-Header"), "custom proxy header")
+		assert.Equal(t, testVersion, r.Header.Get("Gitlab-Workhorse"), "version header")
 
 		_, err := w.Write([]byte(`ok`))
-		require.NoError(t, err, "write ok response")
+		assert.NoError(t, err, "write ok response")
 	})
 
 	httpRequest, err := http.NewRequest("POST", ts.URL+"/url/path", nil)
diff --git a/workhorse/cmd/gitlab-workhorse/sendfile_test.go b/workhorse/cmd/gitlab-workhorse/sendfile_test.go
index a00b7abd872ad70e041310df96642f2647dd1de0..cdc4115487f9d41525f32a364c90edbe57af492b 100644
--- a/workhorse/cmd/gitlab-workhorse/sendfile_test.go
+++ b/workhorse/cmd/gitlab-workhorse/sendfile_test.go
@@ -10,6 +10,7 @@ import (
 	"regexp"
 	"testing"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"gitlab.com/gitlab-org/labkit/log"
 
@@ -36,7 +37,7 @@ func allowedXSendfileDownload(t *testing.T, contentFilename string, filePath str
 	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		log.WithFields(log.Fields{"method": r.Method, "url": r.URL}).Info("UPSTREAM")
 
-		require.Equal(t, "X-Sendfile", r.Header.Get("X-Sendfile-Type"))
+		assert.Equal(t, "X-Sendfile", r.Header.Get("X-Sendfile-Type"))
 
 		w.Header().Set("X-Sendfile", contentPath)
 		w.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, contentFilename))
@@ -66,7 +67,7 @@ func deniedXSendfileDownload(t *testing.T, contentFilename string, filePath stri
 	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		log.WithFields(log.Fields{"method": r.Method, "url": r.URL}).Info("UPSTREAM")
 
-		require.Equal(t, "X-Sendfile", r.Header.Get("X-Sendfile-Type"))
+		assert.Equal(t, "X-Sendfile", r.Header.Get("X-Sendfile-Type"))
 
 		w.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, contentFilename))
 		w.WriteHeader(200)
diff --git a/workhorse/cmd/gitlab-workhorse/upload_test.go b/workhorse/cmd/gitlab-workhorse/upload_test.go
index 9e40ece0b3de545d38e37b505b2b4f899082af51..816ee451975f026d84ade1285712a5449c361bbb 100644
--- a/workhorse/cmd/gitlab-workhorse/upload_test.go
+++ b/workhorse/cmd/gitlab-workhorse/upload_test.go
@@ -14,6 +14,7 @@ import (
 	"testing"
 
 	"github.com/golang-jwt/jwt/v5"
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/api"
@@ -78,7 +79,7 @@ func uploadTestServer(t *testing.T, allowedHashFunctions []string, authorizeTest
 				_, err = fmt.Fprintf(w, `{"TempPath":"%s", "UploadHashFunctions": ["%s"]}`, t.TempDir(), strings.Join(allowedHashFunctions, `","`))
 			}
 
-			require.NoError(t, err)
+			assert.NoError(t, err)
 
 			if authorizeTests != nil {
 				authorizeTests(r)
@@ -86,7 +87,7 @@ func uploadTestServer(t *testing.T, allowedHashFunctions []string, authorizeTest
 			return
 		}
 
-		require.NoError(t, r.ParseMultipartForm(100000))
+		assert.NoError(t, r.ParseMultipartForm(100000))
 
 		nValues := len([]string{
 			"name",
@@ -104,8 +105,8 @@ func uploadTestServer(t *testing.T, allowedHashFunctions []string, authorizeTest
 			nValues += len([]string{"md5", "sha1", "sha256", "sha512"}) // Default hash functions
 		}
 
-		require.Len(t, r.MultipartForm.Value, nValues)
-		require.Empty(t, r.MultipartForm.File, "multipart form files")
+		assert.Len(t, r.MultipartForm.Value, nValues)
+		assert.Empty(t, r.MultipartForm.File, "multipart form files")
 
 		if extraTests != nil {
 			extraTests(r)
@@ -282,8 +283,8 @@ func multipartBodyWithFile() (io.Reader, string, error) {
 
 func unacceleratedUploadTestServer(t *testing.T) *httptest.Server {
 	return testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) {
-		require.False(t, strings.HasSuffix(r.URL.Path, "/authorize"))
-		require.Empty(t, r.Header.Get(upload.RewrittenFieldsHeader))
+		assert.False(t, strings.HasSuffix(r.URL.Path, "/authorize"))
+		assert.Empty(t, r.Header.Get(upload.RewrittenFieldsHeader))
 
 		w.WriteHeader(200)
 	})
@@ -356,27 +357,27 @@ func TestBlockingRewrittenFieldsHeader(t *testing.T) {
 					io.WriteString(w, `{"TempPath":"`+os.TempDir()+`"}`)
 				default:
 					if tc.present {
-						require.Contains(t, r.Header, upload.RewrittenFieldsHeader)
+						assert.Contains(t, r.Header, upload.RewrittenFieldsHeader)
 					} else {
-						require.NotContains(t, r.Header, upload.RewrittenFieldsHeader)
+						assert.NotContains(t, r.Header, upload.RewrittenFieldsHeader)
 					}
 				}
 
-				require.NotEqual(t, canary, r.Header.Get(upload.RewrittenFieldsHeader), "Found canary %q in header", canary)
+				assert.NotEqual(t, canary, r.Header.Get(upload.RewrittenFieldsHeader), "Found canary %q in header", canary)
 			})
 			defer ts.Close()
 			ws := startWorkhorseServer(t, ts.URL)
 
 			req, err := http.NewRequest("POST", ws.URL+"/something", tc.body)
-			require.NoError(t, err)
+			assert.NoError(t, err)
 
 			req.Header.Set("Content-Type", tc.contentType)
 			req.Header.Set(upload.RewrittenFieldsHeader, canary)
 			resp, err := http.DefaultClient.Do(req)
-			require.NoError(t, err)
+			assert.NoError(t, err)
 			defer resp.Body.Close()
 
-			require.Equal(t, 200, resp.StatusCode, "status code")
+			assert.Equal(t, 200, resp.StatusCode, "status code")
 		})
 	}
 }
@@ -391,7 +392,7 @@ func TestLfsUpload(t *testing.T) {
 	)
 
 	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "PUT", r.Method)
+		assert.Equal(t, "PUT", r.Method)
 		switch r.RequestURI {
 		case resource + authorizeSuffix:
 			expectSignedRequest(t, r)
@@ -399,19 +400,19 @@ func TestLfsUpload(t *testing.T) {
 			// Instruct workhorse to accept the upload
 			w.Header().Set("Content-Type", api.ResponseContentType)
 			_, err := fmt.Fprint(w, lfsAPIResponse)
-			require.NoError(t, err)
+			assert.NoError(t, err)
 
 		case resource:
 			expectSignedRequest(t, r)
 
 			// Expect the request to point to a file on disk containing the data
-			require.NoError(t, r.ParseForm())
-			require.Equal(t, oid, r.Form.Get("file.sha256"), "Invalid SHA256 populated")
-			require.Equal(t, strconv.Itoa(len(requestBody)), r.Form.Get("file.size"), "Invalid size populated")
+			assert.NoError(t, r.ParseForm())
+			assert.Equal(t, oid, r.Form.Get("file.sha256"), "Invalid SHA256 populated")
+			assert.Equal(t, strconv.Itoa(len(requestBody)), r.Form.Get("file.size"), "Invalid size populated")
 
 			tempfile, err := os.ReadFile(r.Form.Get("file.path"))
-			require.NoError(t, err)
-			require.Equal(t, requestBody, string(tempfile), "Temporary file has the wrong body")
+			assert.NoError(t, err)
+			assert.Equal(t, requestBody, string(tempfile), "Temporary file has the wrong body")
 
 			fmt.Fprint(w, testRspSuccessBody)
 		default:
@@ -507,7 +508,7 @@ func TestLfsUploadRouting(t *testing.T) {
 
 func packageUploadTestServer(t *testing.T, method string, resource string, reqBody string, rspBody string) *httptest.Server {
 	return testhelper.TestServerWithHandler(regexp.MustCompile(`.`), func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, r.Method, method)
+		assert.Equal(t, r.Method, method)
 		apiResponse := fmt.Sprintf(
 			`{"TempPath":%q, "Size": %d}`, t.TempDir(), len(reqBody),
 		)
@@ -518,23 +519,23 @@ func packageUploadTestServer(t *testing.T, method string, resource string, reqBo
 			// Instruct workhorse to accept the upload
 			w.Header().Set("Content-Type", api.ResponseContentType)
 			_, err := fmt.Fprint(w, apiResponse)
-			require.NoError(t, err)
+			assert.NoError(t, err)
 
 		case resource:
 			expectSignedRequest(t, r)
 
 			// Expect the request to point to a file on disk containing the data
-			require.NoError(t, r.ParseForm())
+			assert.NoError(t, r.ParseForm())
 
 			fileLen := strconv.Itoa(len(reqBody))
-			require.Equal(t, fileLen, r.Form.Get("file.size"), "Invalid size populated")
+			assert.Equal(t, fileLen, r.Form.Get("file.size"), "Invalid size populated")
 
 			tmpFilePath := r.Form.Get("file.path")
 			fileData, err := os.ReadFile(tmpFilePath)
 			defer os.Remove(tmpFilePath)
 
-			require.NoError(t, err)
-			require.Equal(t, reqBody, string(fileData), "Temporary file has the wrong body")
+			assert.NoError(t, err)
+			assert.Equal(t, reqBody, string(fileData), "Temporary file has the wrong body")
 
 			fmt.Fprint(w, rspBody)
 		default:
diff --git a/workhorse/internal/api/api_test.go b/workhorse/internal/api/api_test.go
index 9dba22ae3b95810707ba2dfdc88c8bbea175fc48..724d29c9d1a9efeff9a600bf561a0e5cd2f40433 100644
--- a/workhorse/internal/api/api_test.go
+++ b/workhorse/internal/api/api_test.go
@@ -11,6 +11,7 @@ import (
 	"regexp"
 	"testing"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
 
@@ -186,9 +187,9 @@ func TestSendGitAuditEvent(t *testing.T) {
 		requestHeaders = r.Header
 		defer r.Body.Close()
 		b, err := io.ReadAll(r.Body)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 		err = json.Unmarshal(b, &requestBody)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 	}))
 	defer ts.Close()
 
diff --git a/workhorse/internal/artifacts/entry_test.go b/workhorse/internal/artifacts/entry_test.go
index 709fd5f57a7ff0e6a508b7fc5d99419c0c1ceec8..ec9421b9150bfaa7afcb45322c97b946ff9541ee 100644
--- a/workhorse/internal/artifacts/entry_test.go
+++ b/workhorse/internal/artifacts/entry_test.go
@@ -10,6 +10,7 @@ import (
 	"path/filepath"
 	"testing"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/testhelper"
@@ -18,7 +19,7 @@ import (
 func testEntryServer(t *testing.T, archive string, entry string) *httptest.ResponseRecorder {
 	mux := http.NewServeMux()
 	mux.HandleFunc("/url/path", func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "GET", r.Method)
+		assert.Equal(t, "GET", r.Method)
 
 		encodedEntry := base64.StdEncoding.EncodeToString([]byte(entry))
 		jsonParams := fmt.Sprintf(`{"Archive":"%s","Entry":"%s"}`, archive, encodedEntry)
diff --git a/workhorse/internal/dependencyproxy/dependencyproxy_test.go b/workhorse/internal/dependencyproxy/dependencyproxy_test.go
index feca3279a9d27496420353af450598d46c618446..094ef7c22eee78195c81018d15bb6ba6f27abaf7 100644
--- a/workhorse/internal/dependencyproxy/dependencyproxy_test.go
+++ b/workhorse/internal/dependencyproxy/dependencyproxy_test.go
@@ -13,6 +13,7 @@ import (
 	"testing"
 	"time"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/api"
@@ -222,12 +223,12 @@ func TestValidUploadConfiguration(t *testing.T) {
 		t.Run(tc.desc, func(t *testing.T) {
 			uploadHandler := &fakeUploadHandler{
 				handler: func(w http.ResponseWriter, r *http.Request) {
-					require.Equal(t, tc.expectedConfig.URL, r.URL.String())
-					require.Equal(t, tc.expectedConfig.Method, r.Method)
+					assert.Equal(t, tc.expectedConfig.URL, r.URL.String())
+					assert.Equal(t, tc.expectedConfig.Method, r.Method)
 
 					if tc.expectedConfig.Headers != nil {
 						for k, v := range tc.expectedConfig.Headers {
-							require.Equal(t, v, r.Header[k])
+							assert.Equal(t, v, r.Header[k])
 						}
 					}
 
@@ -368,7 +369,7 @@ func TestFailedOriginServer(t *testing.T) {
 
 	uploadHandler := &fakeUploadHandler{
 		handler: func(w http.ResponseWriter, r *http.Request) {
-			require.FailNow(t, "the error response must not be uploaded")
+			assert.FailNow(t, "the error response must not be uploaded")
 		},
 	}
 
@@ -409,8 +410,8 @@ func TestLongUploadRequest(t *testing.T) {
 		rt := badgateway.NewRoundTripper(false, http.DefaultTransport)
 		res, err := rt.RoundTrip(r)
 
-		require.NoError(t, err, "RoundTripper should not receive an error")
-		require.Equal(t, http.StatusOK, res.StatusCode, "RoundTripper should receive a 200 status code")
+		assert.NoError(t, err, "RoundTripper should not receive an error")
+		assert.Equal(t, http.StatusOK, res.StatusCode, "RoundTripper should receive a 200 status code")
 		w.WriteHeader(res.StatusCode)
 	}
 
diff --git a/workhorse/internal/senddata/contentprocessor/contentprocessor_test.go b/workhorse/internal/senddata/contentprocessor/contentprocessor_test.go
index 1a4cee3b396ed3b8cb4a55f4a624f95460298b29..3915c2715aeed5e17fe770da29b16d71b85792c9 100644
--- a/workhorse/internal/senddata/contentprocessor/contentprocessor_test.go
+++ b/workhorse/internal/senddata/contentprocessor/contentprocessor_test.go
@@ -9,6 +9,7 @@ import (
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/headers"
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/testhelper"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
 
@@ -19,7 +20,7 @@ func TestFailSetContentTypeAndDisposition(t *testing.T) {
 
 	h := http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
 		_, err := io.WriteString(w, testCaseBody)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 	})
 
 	resp := makeRequest(t, h, testCaseBody, "")
@@ -219,7 +220,7 @@ func TestFailOverrideContentType(t *testing.T) {
 				w.Header().Set(headers.GitlabWorkhorseDetectContentTypeHeader, "true")
 				w.Header().Set(headers.ContentTypeHeader, tc.overrideFromUpstream)
 				_, err := io.WriteString(w, tc.body)
-				require.NoError(t, err)
+				assert.NoError(t, err)
 			})
 
 			resp := makeRequest(t, h, tc.body, "")
@@ -238,7 +239,7 @@ func TestSuccessOverrideContentDispositionFromInlineToAttachment(t *testing.T) {
 		w.Header().Set(headers.ContentDispositionHeader, "attachment")
 		w.Header().Set(headers.GitlabWorkhorseDetectContentTypeHeader, "true")
 		_, err := io.WriteString(w, testCaseBody)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 	})
 
 	resp := makeRequest(t, h, testCaseBody, "")
@@ -255,7 +256,7 @@ func TestInlineContentDispositionForPdfFiles(t *testing.T) {
 		w.Header().Set(headers.ContentDispositionHeader, "inline")
 		w.Header().Set(headers.GitlabWorkhorseDetectContentTypeHeader, "true")
 		_, err := io.WriteString(w, testCaseBody)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 	})
 
 	resp := makeRequest(t, h, testCaseBody, "")
@@ -272,7 +273,7 @@ func TestFailOverrideContentDispositionFromAttachmentToInline(t *testing.T) {
 		w.Header().Set(headers.ContentDispositionHeader, "inline")
 		w.Header().Set(headers.GitlabWorkhorseDetectContentTypeHeader, "true")
 		_, err := io.WriteString(w, testCaseBody)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 	})
 
 	resp := makeRequest(t, h, testCaseBody, "")
@@ -317,7 +318,7 @@ func makeRequest(t *testing.T, handler http.HandlerFunc, body string, dispositio
 			w.Header().Set(headers.GitlabWorkhorseDetectContentTypeHeader, "true")
 			w.Header().Set(headers.ContentDispositionHeader, disposition)
 			_, err := io.WriteString(w, body)
-			require.NoError(t, err)
+			assert.NoError(t, err)
 		})
 	}
 	req, _ := http.NewRequest("GET", "/", nil)
diff --git a/workhorse/internal/sendurl/sendurl_test.go b/workhorse/internal/sendurl/sendurl_test.go
index c6f2ecee5ac545a326387aa2950c007067ec01a5..bb59e415b7ac03e28bc0535514f4ea196ab92ca6 100644
--- a/workhorse/internal/sendurl/sendurl_test.go
+++ b/workhorse/internal/sendurl/sendurl_test.go
@@ -10,6 +10,7 @@ import (
 	"testing"
 	"time"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/testhelper"
@@ -25,7 +26,7 @@ type option struct {
 
 func testEntryServer(t *testing.T, requestURL string, httpHeaders http.Header, allowRedirects bool, options ...option) *httptest.ResponseRecorder {
 	requestHandler := func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "GET", r.Method)
+		assert.Equal(t, "GET", r.Method)
 
 		sendData := map[string]interface{}{
 			"URL":            r.URL.String() + "/file",
@@ -37,7 +38,7 @@ func testEntryServer(t *testing.T, requestURL string, httpHeaders http.Header, a
 		}
 
 		jsonParams, err := json.Marshal(sendData)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 		data := base64.URLEncoding.EncodeToString(jsonParams)
 
 		// The server returns a Content-Disposition
@@ -50,14 +51,14 @@ func testEntryServer(t *testing.T, requestURL string, httpHeaders http.Header, a
 		SendURL.Inject(w, r, data)
 	}
 	serveFile := func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "GET", r.Method)
+		assert.Equal(t, "GET", r.Method)
 
 		tempFile, err := os.CreateTemp("", "download_file")
-		require.NoError(t, err)
-		require.NoError(t, os.Remove(tempFile.Name()))
+		assert.NoError(t, err)
+		assert.NoError(t, os.Remove(tempFile.Name()))
 		defer tempFile.Close()
 		_, err = tempFile.Write([]byte(testData))
-		require.NoError(t, err)
+		assert.NoError(t, err)
 
 		w.Header().Set("Etag", testDataEtag)
 		w.Header().Set("Cache-Control", "public")
@@ -68,7 +69,7 @@ func testEntryServer(t *testing.T, requestURL string, httpHeaders http.Header, a
 		http.ServeContent(w, r, "archive.txt", time.Now(), tempFile)
 	}
 	redirectFile := func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "GET", r.Method)
+		assert.Equal(t, "GET", r.Method)
 		http.Redirect(w, r, r.URL.String()+"/download", http.StatusTemporaryRedirect)
 	}
 	timeoutFile := func(w http.ResponseWriter, r *http.Request) {
@@ -217,7 +218,7 @@ func TestPostRequest(t *testing.T) {
 	body := "any string"
 	header := map[string][]string{"Authorization": {"Bearer token"}}
 	postRequestHandler := func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "POST", r.Method)
+		assert.Equal(t, "POST", r.Method)
 
 		url := r.URL.String() + "/external/url"
 
@@ -228,20 +229,20 @@ func TestPostRequest(t *testing.T) {
 			"Method": "POST",
 		}
 		jsonParams, err := json.Marshal(sendData)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 
 		data := base64.URLEncoding.EncodeToString(jsonParams)
 
 		SendURL.Inject(w, r, data)
 	}
 	externalPostURLHandler := func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "POST", r.Method)
+		assert.Equal(t, "POST", r.Method)
 
 		b, err := io.ReadAll(r.Body)
-		require.NoError(t, err)
-		require.Equal(t, body, string(b))
+		assert.NoError(t, err)
+		assert.Equal(t, body, string(b))
 
-		require.Equal(t, []string{"Bearer token"}, r.Header["Authorization"])
+		assert.Equal(t, []string{"Bearer token"}, r.Header["Authorization"])
 
 		w.Write([]byte(testData))
 	}
diff --git a/workhorse/internal/staticpages/error_pages_test.go b/workhorse/internal/staticpages/error_pages_test.go
index afbe70fa084a68ee7e7282441e4e9042a05341ca..a7c62f59bf26fb62fb70bf45e84c48523d60babc 100644
--- a/workhorse/internal/staticpages/error_pages_test.go
+++ b/workhorse/internal/staticpages/error_pages_test.go
@@ -8,6 +8,7 @@ import (
 	"path/filepath"
 	"testing"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/testhelper"
@@ -28,8 +29,8 @@ func TestIfErrorPageIsPresented(t *testing.T) {
 		w.WriteHeader(404)
 		upstreamBody := "Not Found"
 		n, err := fmt.Fprint(w, upstreamBody)
-		require.NoError(t, err)
-		require.Len(t, upstreamBody, n, "bytes written")
+		assert.NoError(t, err)
+		assert.Len(t, upstreamBody, n, "bytes written")
 	})
 	st := &Static{DocumentRoot: dir}
 	st.ErrorPagesUnless(false, ErrorFormatHTML, h).ServeHTTP(w, nil)
@@ -134,8 +135,8 @@ func TestIfErrorPageIsPresentedJSON(t *testing.T) {
 		w.WriteHeader(404)
 		upstreamBody := "This string is ignored"
 		n, err := fmt.Fprint(w, upstreamBody)
-		require.NoError(t, err)
-		require.Len(t, upstreamBody, n, "bytes written")
+		assert.NoError(t, err)
+		assert.Len(t, upstreamBody, n, "bytes written")
 	})
 	st := &Static{}
 	st.ErrorPagesUnless(false, ErrorFormatJSON, h).ServeHTTP(w, nil)
@@ -154,8 +155,8 @@ func TestIfErrorPageIsPresentedText(t *testing.T) {
 		w.WriteHeader(404)
 		upstreamBody := "This string is ignored"
 		n, err := fmt.Fprint(w, upstreamBody)
-		require.NoError(t, err)
-		require.Len(t, upstreamBody, n, "bytes written")
+		assert.NoError(t, err)
+		assert.Len(t, upstreamBody, n, "bytes written")
 	})
 	st := &Static{}
 	st.ErrorPagesUnless(false, ErrorFormatText, h).ServeHTTP(w, nil)
diff --git a/workhorse/internal/upload/artifacts_store_test.go b/workhorse/internal/upload/artifacts_store_test.go
index 0beaf482688edee6d0284a625547b7e093853415..29584422bad71005c7753614ed3e01e4d58a069b 100644
--- a/workhorse/internal/upload/artifacts_store_test.go
+++ b/workhorse/internal/upload/artifacts_store_test.go
@@ -15,6 +15,7 @@ import (
 	"testing"
 	"time"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/api"
@@ -73,11 +74,11 @@ func TestUploadHandlerSendingToExternalStorage(t *testing.T) {
 	storeServerCalled := 0
 	storeServerMux := http.NewServeMux()
 	storeServerMux.HandleFunc(putURL, func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "PUT", r.Method)
+		assert.Equal(t, "PUT", r.Method)
 
 		receivedData, err := io.ReadAll(r.Body)
-		require.NoError(t, err)
-		require.Equal(t, archiveData, receivedData)
+		assert.NoError(t, err)
+		assert.Equal(t, archiveData, receivedData)
 
 		storeServerCalled++
 		w.Header().Set("ETag", md5)
@@ -89,8 +90,8 @@ func TestUploadHandlerSendingToExternalStorage(t *testing.T) {
 
 	responseProcessorCalled := 0
 	responseProcessor := func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "store-id", r.FormValue("file.remote_id"))
-		require.NotEmpty(t, r.FormValue("file.remote_url"))
+		assert.Equal(t, "store-id", r.FormValue("file.remote_id"))
+		assert.NotEmpty(t, r.FormValue("file.remote_url"))
 		w.WriteHeader(200)
 		responseProcessorCalled++
 	}
@@ -184,7 +185,7 @@ func TestUploadHandlerSendingToExternalStorageAndItReturnsAnError(t *testing.T)
 	storeServerMux := http.NewServeMux()
 	storeServerMux.HandleFunc(putURL, func(w http.ResponseWriter, r *http.Request) {
 		putCalledTimes++
-		require.Equal(t, "PUT", r.Method)
+		assert.Equal(t, "PUT", r.Method)
 		w.WriteHeader(510)
 	})
 
diff --git a/workhorse/internal/upload/artifacts_upload_test.go b/workhorse/internal/upload/artifacts_upload_test.go
index 47e9b29bd24a0e07995fa8b24e49a963a267b626..ca87b5b3a3e44a17e2f5aa24c6c4b4c8548b009e 100644
--- a/workhorse/internal/upload/artifacts_upload_test.go
+++ b/workhorse/internal/upload/artifacts_upload_test.go
@@ -27,6 +27,7 @@ import (
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/upstream/roundtripper"
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/zipartifacts"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
 
@@ -62,7 +63,7 @@ func testArtifactsUploadServer(t *testing.T, authResponse *api.Response, bodyPro
 	})
 	mux.HandleFunc(Path, func(w http.ResponseWriter, r *http.Request) {
 		opts, err := destination.GetOpts(authResponse)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 
 		if r.Method != "POST" {
 			t.Fatal("Expected POST request")
@@ -202,28 +203,28 @@ func TestUploadHandlerAddingMetadata(t *testing.T) {
 			s := setupWithTmpPath(t, "file", tc.includeFormat, tc.format, nil,
 				func(w http.ResponseWriter, r *http.Request) {
 					token, err := jwt.ParseWithClaims(r.Header.Get(RewrittenFieldsHeader), &MultipartClaims{}, testhelper.ParseJWT)
-					require.NoError(t, err)
+					assert.NoError(t, err)
 
 					rewrittenFields := token.Claims.(*MultipartClaims).RewrittenFields
-					require.Len(t, rewrittenFields, 2)
+					assert.Len(t, rewrittenFields, 2)
 
-					require.Contains(t, rewrittenFields, "file")
-					require.Contains(t, rewrittenFields, "metadata")
-					require.Contains(t, r.PostForm, "file.gitlab-workhorse-upload")
-					require.Contains(t, r.PostForm, "metadata.gitlab-workhorse-upload")
+					assert.Contains(t, rewrittenFields, "file")
+					assert.Contains(t, rewrittenFields, "metadata")
+					assert.Contains(t, r.PostForm, "file.gitlab-workhorse-upload")
+					assert.Contains(t, r.PostForm, "metadata.gitlab-workhorse-upload")
 				},
 			)
 
 			archive := zip.NewWriter(s.fileWriter)
 			file, err := archive.Create("test.file")
-			require.NotNil(t, file)
-			require.NoError(t, err)
+			assert.NotNil(t, file)
+			assert.NoError(t, err)
 
-			require.NoError(t, archive.Close())
-			require.NoError(t, s.writer.Close())
+			assert.NoError(t, archive.Close())
+			assert.NoError(t, s.writer.Close())
 
 			response := testUploadArtifacts(t, s.writer.FormDataContentType(), s.url, s.buffer)
-			require.Equal(t, http.StatusOK, response.Code)
+			assert.Equal(t, http.StatusOK, response.Code)
 			testhelper.RequireResponseHeader(t, response, MetadataHeaderKey, MetadataHeaderPresent)
 		})
 	}
@@ -233,13 +234,13 @@ func TestUploadHandlerTarArtifact(t *testing.T) {
 	s := setupWithTmpPath(t, "file", true, "tar", nil,
 		func(w http.ResponseWriter, r *http.Request) {
 			token, err := jwt.ParseWithClaims(r.Header.Get(RewrittenFieldsHeader), &MultipartClaims{}, testhelper.ParseJWT)
-			require.NoError(t, err)
+			assert.NoError(t, err)
 
 			rewrittenFields := token.Claims.(*MultipartClaims).RewrittenFields
-			require.Len(t, rewrittenFields, 1)
+			assert.Len(t, rewrittenFields, 1)
 
-			require.Contains(t, rewrittenFields, "file")
-			require.Contains(t, r.PostForm, "file.gitlab-workhorse-upload")
+			assert.Contains(t, rewrittenFields, "file")
+			assert.Contains(t, r.PostForm, "file.gitlab-workhorse-upload")
 		},
 	)
 
diff --git a/workhorse/internal/upload/body_uploader_test.go b/workhorse/internal/upload/body_uploader_test.go
index 9c4ba4e1cca37753e51c9c7a0a8a2a97b7e31361..503878f22b72bccbc0275a88ff09bd1211232f85 100644
--- a/workhorse/internal/upload/body_uploader_test.go
+++ b/workhorse/internal/upload/body_uploader_test.go
@@ -12,6 +12,7 @@ import (
 	"testing"
 
 	"github.com/golang-jwt/jwt/v5"
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/api"
@@ -78,7 +79,7 @@ func TestRequestBodyErrors(t *testing.T) {
 
 func testNoProxyInvocation(t *testing.T, expectedStatus int, auth PreAuthorizer, preparer Preparer) {
 	proxy := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		require.Fail(t, "request proxied upstream")
+		assert.Fail(t, "request proxied upstream")
 	})
 
 	ctx, cancel := context.WithCancel(context.Background())
@@ -101,22 +102,22 @@ func testUpload(ctx context.Context, auth PreAuthorizer, preparer Preparer, prox
 func echoProxy(t *testing.T, expectedBodyLength int) http.Handler {
 	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		err := r.ParseForm()
-		require.NoError(t, err)
+		assert.NoError(t, err)
 
-		require.Equal(t, "application/x-www-form-urlencoded", r.Header.Get("Content-Type"), "Wrong Content-Type header")
+		assert.Equal(t, "application/x-www-form-urlencoded", r.Header.Get("Content-Type"), "Wrong Content-Type header")
 
-		require.Contains(t, r.PostForm, "file.md5")
-		require.Contains(t, r.PostForm, "file.sha1")
-		require.Contains(t, r.PostForm, "file.sha256")
-		require.Contains(t, r.PostForm, "file.sha512")
+		assert.Contains(t, r.PostForm, "file.md5")
+		assert.Contains(t, r.PostForm, "file.sha1")
+		assert.Contains(t, r.PostForm, "file.sha256")
+		assert.Contains(t, r.PostForm, "file.sha512")
 
-		require.Contains(t, r.PostForm, "file.path")
-		require.Contains(t, r.PostForm, "file.size")
-		require.Contains(t, r.PostForm, "file.gitlab-workhorse-upload")
-		require.Equal(t, strconv.Itoa(expectedBodyLength), r.PostFormValue("file.size"))
+		assert.Contains(t, r.PostForm, "file.path")
+		assert.Contains(t, r.PostForm, "file.size")
+		assert.Contains(t, r.PostForm, "file.gitlab-workhorse-upload")
+		assert.Equal(t, strconv.Itoa(expectedBodyLength), r.PostFormValue("file.size"))
 
 		token, err := jwt.ParseWithClaims(r.Header.Get(RewrittenFieldsHeader), &MultipartClaims{}, testhelper.ParseJWT)
-		require.NoError(t, err, "Wrong JWT header")
+		assert.NoError(t, err, "Wrong JWT header")
 
 		rewrittenFields := token.Claims.(*MultipartClaims).RewrittenFields
 		if len(rewrittenFields) != 1 || len(rewrittenFields["file"]) == 0 {
@@ -124,22 +125,22 @@ func echoProxy(t *testing.T, expectedBodyLength int) http.Handler {
 		}
 
 		token, jwtErr := jwt.ParseWithClaims(r.PostFormValue("file.gitlab-workhorse-upload"), &testhelper.UploadClaims{}, testhelper.ParseJWT)
-		require.NoError(t, jwtErr, "Wrong signed upload fields")
+		assert.NoError(t, jwtErr, "Wrong signed upload fields")
 
 		uploadFields := token.Claims.(*testhelper.UploadClaims).Upload
-		require.Contains(t, uploadFields, "name")
-		require.Contains(t, uploadFields, "path")
-		require.Contains(t, uploadFields, "remote_url")
-		require.Contains(t, uploadFields, "remote_id")
-		require.Contains(t, uploadFields, "size")
-		require.Contains(t, uploadFields, "md5")
-		require.Contains(t, uploadFields, "sha1")
-		require.Contains(t, uploadFields, "sha256")
-		require.Contains(t, uploadFields, "sha512")
+		assert.Contains(t, uploadFields, "name")
+		assert.Contains(t, uploadFields, "path")
+		assert.Contains(t, uploadFields, "remote_url")
+		assert.Contains(t, uploadFields, "remote_id")
+		assert.Contains(t, uploadFields, "size")
+		assert.Contains(t, uploadFields, "md5")
+		assert.Contains(t, uploadFields, "sha1")
+		assert.Contains(t, uploadFields, "sha256")
+		assert.Contains(t, uploadFields, "sha512")
 
 		path := r.PostFormValue("file.path")
 		uploaded, err := os.Open(path)
-		require.NoError(t, err, "File not uploaded")
+		assert.NoError(t, err, "File not uploaded")
 
 		// sending back the file for testing purpose
 		io.Copy(w, uploaded)
diff --git a/workhorse/internal/upload/destination/objectstore/multipart_test.go b/workhorse/internal/upload/destination/objectstore/multipart_test.go
index 00244a5c50b054d6ea03e456f4f827e8eb3564ae..311ebee47568030c1e7b3add663fd648bb26e651 100644
--- a/workhorse/internal/upload/destination/objectstore/multipart_test.go
+++ b/workhorse/internal/upload/destination/objectstore/multipart_test.go
@@ -9,6 +9,7 @@ import (
 	"testing"
 	"time"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/upload/destination/objectstore/test"
@@ -22,7 +23,7 @@ func TestMultipartUploadWithUpcaseETags(t *testing.T) {
 
 	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		_, err := io.ReadAll(r.Body)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 		defer r.Body.Close()
 
 		// Part upload request
diff --git a/workhorse/internal/upload/destination/objectstore/object_test.go b/workhorse/internal/upload/destination/objectstore/object_test.go
index 2b94cd9e3b1cb921332362467dc3f3ff18adc842..cbaa03ccbfb6d134949143f829f93aab3e3912ea 100644
--- a/workhorse/internal/upload/destination/objectstore/object_test.go
+++ b/workhorse/internal/upload/destination/objectstore/object_test.go
@@ -9,6 +9,7 @@ import (
 	"testing"
 	"time"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/upload/destination/objectstore/test"
@@ -123,7 +124,7 @@ func TestObjectUploadBrokenConnection(t *testing.T) {
 	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		hj, ok := w.(http.Hijacker)
 		if !ok {
-			require.FailNow(t, "webserver doesn't support hijacking")
+			assert.FailNow(t, "webserver doesn't support hijacking")
 		}
 		conn, _, err := hj.Hijack()
 		if err != nil {
diff --git a/workhorse/internal/upload/uploads_test.go b/workhorse/internal/upload/uploads_test.go
index 373acba382d25f2e6c9f676cd4e3243c4c60d25b..7fd3bb7599241831885e1a3cf082c3b0f1870e87 100644
--- a/workhorse/internal/upload/uploads_test.go
+++ b/workhorse/internal/upload/uploads_test.go
@@ -18,6 +18,7 @@ import (
 	"testing"
 	"time"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	"gitlab.com/gitlab-org/gitlab/workhorse/internal/api"
@@ -57,11 +58,11 @@ func TestUploadTempPathRequirement(t *testing.T) {
 
 func TestUploadHandlerForwardingRawData(t *testing.T) {
 	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`/url/path\z`), func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "PATCH", r.Method, "method")
+		assert.Equal(t, "PATCH", r.Method, "method")
 
 		body, err := io.ReadAll(r.Body)
-		require.NoError(t, err)
-		require.Equal(t, "REQUEST", string(body), "request body")
+		assert.NoError(t, err)
+		assert.Equal(t, "REQUEST", string(body), "request body")
 
 		w.WriteHeader(202)
 		fmt.Fprint(w, "RESPONSE")
@@ -92,19 +93,19 @@ func TestUploadHandlerRewritingMultiPartData(t *testing.T) {
 	tempPath := t.TempDir()
 
 	ts := testhelper.TestServerWithHandler(regexp.MustCompile(`/url/path\z`), func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "PUT", r.Method, "method")
-		require.NoError(t, r.ParseMultipartForm(100000))
+		assert.Equal(t, "PUT", r.Method, "method")
+		assert.NoError(t, r.ParseMultipartForm(100000))
 
-		require.Empty(t, r.MultipartForm.File, "Expected to not receive any files")
-		require.Equal(t, "test", r.FormValue("token"), "Expected to receive token")
-		require.Equal(t, "my.file", r.FormValue("file.name"), "Expected to receive a filename")
+		assert.Empty(t, r.MultipartForm.File, "Expected to not receive any files")
+		assert.Equal(t, "test", r.FormValue("token"), "Expected to receive token")
+		assert.Equal(t, "my.file", r.FormValue("file.name"), "Expected to receive a filename")
 
 		filePath = r.FormValue("file.path")
-		require.True(t, strings.HasPrefix(filePath, tempPath), "Expected to the file to be in tempPath")
+		assert.True(t, strings.HasPrefix(filePath, tempPath), "Expected to the file to be in tempPath")
 
-		require.Empty(t, r.FormValue("file.remote_url"), "Expected to receive empty remote_url")
-		require.Empty(t, r.FormValue("file.remote_id"), "Expected to receive empty remote_id")
-		require.Equal(t, "4", r.FormValue("file.size"), "Expected to receive the file size")
+		assert.Empty(t, r.FormValue("file.remote_url"), "Expected to receive empty remote_url")
+		assert.Empty(t, r.FormValue("file.remote_id"), "Expected to receive empty remote_id")
+		assert.Equal(t, "4", r.FormValue("file.size"), "Expected to receive the file size")
 
 		hashes := map[string]string{
 			"sha1":   "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
@@ -113,13 +114,13 @@ func TestUploadHandlerRewritingMultiPartData(t *testing.T) {
 		}
 
 		for algo, hash := range hashes {
-			require.Equal(t, hash, r.FormValue("file."+algo), "file hash %s", algo)
+			assert.Equal(t, hash, r.FormValue("file."+algo), "file hash %s", algo)
 		}
 
 		expectedLen := 12
 
-		require.Equal(t, "098f6bcd4621d373cade4e832627b4f6", r.FormValue("file.md5"), "file hash md5")
-		require.Len(t, r.MultipartForm.Value, expectedLen, "multipart form values")
+		assert.Equal(t, "098f6bcd4621d373cade4e832627b4f6", r.FormValue("file.md5"), "file hash md5")
+		assert.Len(t, r.MultipartForm.Value, expectedLen, "multipart form values")
 
 		w.WriteHeader(202)
 		fmt.Fprint(w, "RESPONSE")
@@ -184,7 +185,7 @@ func TestUploadHandlerDetectingInjectedMultiPartData(t *testing.T) {
 	for _, test := range tests {
 		t.Run(test.name, func(t *testing.T) {
 			ts := testhelper.TestServerWithHandler(regexp.MustCompile(`/url/path\z`), func(w http.ResponseWriter, r *http.Request) {
-				require.Equal(t, "PUT", r.Method, "method")
+				assert.Equal(t, "PUT", r.Method, "method")
 
 				w.WriteHeader(202)
 				fmt.Fprint(w, "RESPONSE")
@@ -518,12 +519,12 @@ func TestUploadHandlerRemovingExif(t *testing.T) {
 
 	runUploadTest(t, content, "sample_exif.jpg", 200, func(w http.ResponseWriter, r *http.Request) {
 		err := r.ParseMultipartForm(100000)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 
 		size, err := strconv.Atoi(r.FormValue("file.size"))
-		require.NoError(t, err)
-		require.Less(t, size, len(content), "Expected the file to be smaller after removal of exif")
-		require.Greater(t, size, 0, "Expected to receive non-empty file")
+		assert.NoError(t, err)
+		assert.Less(t, size, len(content), "Expected the file to be smaller after removal of exif")
+		assert.Greater(t, size, 0, "Expected to receive non-empty file")
 
 		w.WriteHeader(200)
 		fmt.Fprint(w, "RESPONSE")
@@ -536,12 +537,12 @@ func TestUploadHandlerRemovingExifTiff(t *testing.T) {
 
 	runUploadTest(t, content, "sample_exif.tiff", 200, func(w http.ResponseWriter, r *http.Request) {
 		err := r.ParseMultipartForm(100000)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 
 		size, err := strconv.Atoi(r.FormValue("file.size"))
-		require.NoError(t, err)
-		require.Less(t, size, len(content), "Expected the file to be smaller after removal of exif")
-		require.Greater(t, size, 0, "Expected to receive not empty file")
+		assert.NoError(t, err)
+		assert.Less(t, size, len(content), "Expected the file to be smaller after removal of exif")
+		assert.Greater(t, size, 0, "Expected to receive not empty file")
 
 		w.WriteHeader(200)
 		fmt.Fprint(w, "RESPONSE")
@@ -554,11 +555,11 @@ func TestUploadHandlerRemovingExifInvalidContentType(t *testing.T) {
 
 	runUploadTest(t, content, "sample_exif_invalid.jpg", 200, func(w http.ResponseWriter, r *http.Request) {
 		err := r.ParseMultipartForm(100000)
-		require.NoError(t, err)
+		assert.NoError(t, err)
 
 		output, err := os.ReadFile(r.FormValue("file.path"))
-		require.NoError(t, err)
-		require.Equal(t, content, output, "Expected the file to be same as before")
+		assert.NoError(t, err)
+		assert.Equal(t, content, output, "Expected the file to be same as before")
 
 		w.WriteHeader(200)
 		fmt.Fprint(w, "RESPONSE")
@@ -571,7 +572,7 @@ func TestUploadHandlerRemovingExifCorruptedFile(t *testing.T) {
 
 	runUploadTest(t, content, "sample_exif_corrupted.jpg", 422, func(w http.ResponseWriter, r *http.Request) {
 		err := r.ParseMultipartForm(100000)
-		require.Error(t, err)
+		assert.Error(t, err)
 	})
 }
 
diff --git a/workhorse/internal/upstream/handlers_test.go b/workhorse/internal/upstream/handlers_test.go
index 03ca80ddcb9e1b961b8c8bed6ac2d510f50ca276..fc73a2d9e41034dbe590532eccdfcf2c3c57f1af 100644
--- a/workhorse/internal/upstream/handlers_test.go
+++ b/workhorse/internal/upstream/handlers_test.go
@@ -9,6 +9,7 @@ import (
 	"net/http/httptest"
 	"testing"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
 
@@ -27,8 +28,8 @@ func TestGzipEncoding(t *testing.T) {
 	req.Header.Set("Content-Encoding", "gzip")
 
 	contentEncodingHandler(http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) {
-		require.IsType(t, &gzip.Reader{}, r.Body, "body type")
-		require.Empty(t, r.Header.Get("Content-Encoding"), "Content-Encoding should be deleted")
+		assert.IsType(t, &gzip.Reader{}, r.Body, "body type")
+		assert.Empty(t, r.Header.Get("Content-Encoding"), "Content-Encoding should be deleted")
 	})).ServeHTTP(resp, req)
 
 	require.Equal(t, 200, resp.Code)
@@ -45,8 +46,8 @@ func TestNoEncoding(t *testing.T) {
 	req.Header.Set("Content-Encoding", "")
 
 	contentEncodingHandler(http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) {
-		require.Equal(t, body, r.Body, "Expected the same body")
-		require.Empty(t, r.Header.Get("Content-Encoding"), "Content-Encoding should be deleted")
+		assert.Equal(t, body, r.Body, "Expected the same body")
+		assert.Empty(t, r.Header.Get("Content-Encoding"), "Content-Encoding should be deleted")
 	})).ServeHTTP(resp, req)
 
 	require.Equal(t, 200, resp.Code)
diff --git a/workhorse/internal/upstream/upstream_test.go b/workhorse/internal/upstream/upstream_test.go
index 9fb8d127a3c3ec7409cd01c6ef2eefa21a3f407a..3eee0bf12599c550aeb82292d0232959168f7eca 100644
--- a/workhorse/internal/upstream/upstream_test.go
+++ b/workhorse/internal/upstream/upstream_test.go
@@ -10,6 +10,7 @@ import (
 	"time"
 
 	"github.com/sirupsen/logrus"
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
 	apipkg "gitlab.com/gitlab-org/gitlab/workhorse/internal/api"
@@ -263,8 +264,8 @@ func TestGeoProxyUpdatesExtraDataWhenChanged(t *testing.T) {
 	var expectedGeoProxyExtraData string
 
 	remoteServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "1", r.Header.Get("Gitlab-Workhorse-Geo-Proxy"), "custom proxy header")
-		require.Equal(t, expectedGeoProxyExtraData, r.Header.Get("Gitlab-Workhorse-Geo-Proxy-Extra-Data"), "custom extra data header")
+		assert.Equal(t, "1", r.Header.Get("Gitlab-Workhorse-Geo-Proxy"), "custom proxy header")
+		assert.Equal(t, expectedGeoProxyExtraData, r.Header.Get("Gitlab-Workhorse-Geo-Proxy-Extra-Data"), "custom extra data header")
 		w.WriteHeader(http.StatusOK)
 	}))
 	defer remoteServer.Close()
@@ -321,8 +322,8 @@ func TestGeoProxySetsCustomHeader(t *testing.T) {
 	for _, tc := range testCases {
 		t.Run(tc.desc, func(t *testing.T) {
 			remoteServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-				require.Equal(t, "1", r.Header.Get("Gitlab-Workhorse-Geo-Proxy"), "custom proxy header")
-				require.Equal(t, tc.extraData, r.Header.Get("Gitlab-Workhorse-Geo-Proxy-Extra-Data"), "custom proxy extra data header")
+				assert.Equal(t, "1", r.Header.Get("Gitlab-Workhorse-Geo-Proxy"), "custom proxy header")
+				assert.Equal(t, tc.extraData, r.Header.Get("Gitlab-Workhorse-Geo-Proxy-Extra-Data"), "custom proxy extra data header")
 				w.WriteHeader(http.StatusOK)
 			}))
 			defer remoteServer.Close()
diff --git a/workhorse/internal/zipartifacts/open_archive_test.go b/workhorse/internal/zipartifacts/open_archive_test.go
index 2d84199a8e42dcd94c32ee62658cdbbdf125d448..a644c0ec0184a87bbc8f44706cc5cce4d90ad75f 100644
--- a/workhorse/internal/zipartifacts/open_archive_test.go
+++ b/workhorse/internal/zipartifacts/open_archive_test.go
@@ -12,6 +12,7 @@ import (
 	"path/filepath"
 	"testing"
 
+	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
 
@@ -118,8 +119,8 @@ func TestMinimalRangeRequests(t *testing.T) {
 
 func TestOpenHTTPArchiveNotSendingAcceptEncodingHeader(t *testing.T) {
 	requestHandler := func(w http.ResponseWriter, r *http.Request) {
-		require.Equal(t, "GET", r.Method)
-		require.Nil(t, r.Header["Accept-Encoding"])
+		assert.Equal(t, "GET", r.Method)
+		assert.Nil(t, r.Header["Accept-Encoding"])
 		w.WriteHeader(http.StatusOK)
 	}