Repository: metal3-io/baremetal-operator

Issue:
Enable "testifylint" linter in golangci-lint
Enable "testifylint" linter in golangci-lint. Fix any warnings enabling it causes.

/area ci
/help
/triage accepted

Hints from issue comments:
@metal3-io-bot: @tuminoid: 
	This request has been marked as needing help from a contributor.

Please ensure the request meets the requirements listed [here](https://git.k8s.io/community/contributors/guide/help-wanted.md).

If this request no longer meets these requirements, the label can be removed
by commenting with the `/remove-help` command.


<details>

In response to [this](https://github.com/metal3-io/baremetal-operator/issues/2363):

>Enable "testifylint" linter in golangci-lint. Fix any warnings enabling it causes.
>
>/area ci
>/help
>/triage accepted


Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository.
</details>@metal3-io-bot: @tuminoid: The label(s) `area/ci` cannot be applied, because the repository doesn't have them.

<details>

In response to [this](https://github.com/metal3-io/baremetal-operator/issues/2363):

>Enable "testifylint" linter in golangci-lint. Fix any warnings enabling it causes.
>
>/area ci
>/help
>/triage accepted


Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository.
</details>

Solution patch:
diff --git a/.gitignore b/.gitignore
index f73706b1..c1e762ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,3 +58,5 @@ config/overlays/temp
 .devcontainer
 # Python venv
 .venv
+
+.idea/
diff --git a/.golangci.yaml b/.golangci.yaml
index 45a6a293..0b5a2de8 100644
--- a/.golangci.yaml
+++ b/.golangci.yaml
@@ -65,7 +65,7 @@ linters:
   - staticcheck
   - stylecheck
   #- tagliatelle
-  #- testifylint
+  - testifylint
   - thelper
   - tparallel
   - typecheck
diff --git a/Dockerfile b/Dockerfile
index 5fd37a1a..15cfdc47 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
 # Support FROM override
-ARG BUILD_IMAGE=docker.io/golang:1.23.7@sha256:1acb493b9f9dfdfe705042ce09e8ded908ce4fb342405ecf3ca61ce7f3b168c7
+ARG BUILD_IMAGE=docker.io/golang:1.23.8@sha256:a5339982f2e78b38b26ebbee35139854e184a4e90e1516f9f636371e720b727b
 ARG BASE_IMAGE=gcr.io/distroless/static:nonroot@sha256:9ecc53c269509f63c69a266168e4a687c7eb8c0cfd753bd8bfcaa4f58a90876f
 
 # Build the manager binary
diff --git a/Makefile b/Makefile
index 0970cccf..1f893b3f 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ GO_TEST_FLAGS = $(TEST_FLAGS)
 DEBUG = --debug
 COVER_PROFILE = cover.out
 GO := $(shell type -P go)
-GO_VERSION ?= 1.23.7
+GO_VERSION ?= 1.23.8
 
 ROOT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
 
diff --git a/apis/go.mod b/apis/go.mod
index 35837e70..3e8dbc91 100644
--- a/apis/go.mod
+++ b/apis/go.mod
@@ -38,11 +38,11 @@ require (
 	github.com/prometheus/common v0.55.0 // indirect
 	github.com/prometheus/procfs v0.15.1 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
-	golang.org/x/net v0.36.0 // indirect
+	golang.org/x/net v0.38.0 // indirect
 	golang.org/x/oauth2 v0.27.0 // indirect
-	golang.org/x/sys v0.30.0 // indirect
-	golang.org/x/term v0.29.0 // indirect
-	golang.org/x/text v0.22.0 // indirect
+	golang.org/x/sys v0.31.0 // indirect
+	golang.org/x/term v0.30.0 // indirect
+	golang.org/x/text v0.23.0 // indirect
 	golang.org/x/time v0.3.0 // indirect
 	gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
 	google.golang.org/protobuf v1.34.2 // indirect
diff --git a/apis/go.sum b/apis/go.sum
index 81dde93b..3d6c7c8d 100644
--- a/apis/go.sum
+++ b/apis/go.sum
@@ -113,8 +113,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
-golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
 golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
 golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -123,14 +123,14 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
-golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
-golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
+golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
+golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
+golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
-golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
+golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
+golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
 golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
diff --git a/go.mod b/go.mod
index 8780c4bf..3e9906a3 100644
--- a/go.mod
+++ b/go.mod
@@ -8,7 +8,7 @@ require (
 	github.com/gophercloud/gophercloud/v2 v2.6.0
 	github.com/metal3-io/baremetal-operator/apis v0.5.1
 	github.com/metal3-io/baremetal-operator/pkg/hardwareutils v0.5.1
-	github.com/onsi/gomega v1.36.3
+	github.com/onsi/gomega v1.37.0
 	github.com/pkg/errors v0.9.1
 	github.com/prometheus/client_golang v1.21.1
 	github.com/stretchr/testify v1.10.0
@@ -80,7 +80,7 @@ require (
 	go.opentelemetry.io/proto/otlp v1.3.1 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
 	golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
-	golang.org/x/net v0.37.0 // indirect
+	golang.org/x/net v0.38.0 // indirect
 	golang.org/x/oauth2 v0.27.0 // indirect
 	golang.org/x/sync v0.12.0 // indirect
 	golang.org/x/sys v0.31.0 // indirect
diff --git a/go.sum b/go.sum
index 10f96b66..5b549f9e 100644
--- a/go.sum
+++ b/go.sum
@@ -102,8 +102,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 github.com/onsi/ginkgo/v2 v2.23.3 h1:edHxnszytJ4lD9D5Jjc4tiDkPBZ3siDeJJkUZJJVkp0=
 github.com/onsi/ginkgo/v2 v2.23.3/go.mod h1:zXTP6xIp3U8aVuXN8ENK9IXRaTjFnpVB9mGmaSRvxnM=
-github.com/onsi/gomega v1.36.3 h1:hID7cr8t3Wp26+cYnfcjR6HpJ00fdogN6dqZ1t6IylU=
-github.com/onsi/gomega v1.36.3/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
+github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
+github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -175,8 +175,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
-golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
 golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
 golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
diff --git a/hack/e2e/ensure_go.sh b/hack/e2e/ensure_go.sh
index 390e6175..f170cd05 100755
--- a/hack/e2e/ensure_go.sh
+++ b/hack/e2e/ensure_go.sh
@@ -2,7 +2,7 @@
 
 set -eux
 
-MINIMUM_GO_VERSION=go1.23.7
+MINIMUM_GO_VERSION=go1.23.8
 
 # Ensure the go tool exists and is a viable version, or installs it
 verify_go_version()
diff --git a/hack/tools/go.mod b/hack/tools/go.mod
index 783c6374..d62ea8aa 100644
--- a/hack/tools/go.mod
+++ b/hack/tools/go.mod
@@ -7,7 +7,7 @@ require (
 	github.com/google/go-github v17.0.0+incompatible
 	github.com/pkg/errors v0.9.1
 	golang.org/x/crypto v0.36.0
-	golang.org/x/oauth2 v0.27.0
+	golang.org/x/oauth2 v0.29.0
 	sigs.k8s.io/cluster-api/test v1.9.5
 	sigs.k8s.io/controller-tools v0.16.5
 	sigs.k8s.io/kustomize/api v0.19.0
@@ -46,7 +46,7 @@ require (
 	github.com/x448/float16 v0.8.4 // indirect
 	github.com/xlab/treeprint v1.2.0 // indirect
 	golang.org/x/mod v0.21.0 // indirect
-	golang.org/x/net v0.36.0 // indirect
+	golang.org/x/net v0.38.0 // indirect
 	golang.org/x/sync v0.12.0 // indirect
 	golang.org/x/sys v0.31.0 // indirect
 	golang.org/x/text v0.23.0 // indirect
diff --git a/hack/tools/go.sum b/hack/tools/go.sum
index bb87d3e1..9fe2034d 100644
--- a/hack/tools/go.sum
+++ b/hack/tools/go.sum
@@ -129,10 +129,10 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
-golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
-golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
-golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98=
+golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=



Test patch:
diff --git a/apis/metal3.io/v1alpha1/hostfirmwarecomponents_types_test.go b/apis/metal3.io/v1alpha1/hostfirmwarecomponents_types_test.go
index 649a4933..74d02986 100644
--- a/apis/metal3.io/v1alpha1/hostfirmwarecomponents_types_test.go
+++ b/apis/metal3.io/v1alpha1/hostfirmwarecomponents_types_test.go
@@ -85,7 +85,7 @@ func TestValidateHostFirmwareComponents(t *testing.T) {
 
 			err := hostFirmwareComponents.ValidateHostFirmwareComponents()
 			if err == nil {
-				assert.Equal(t, tc.ExpectedError, "")
+				assert.Equal(t, "", tc.ExpectedError)
 			} else {
 				assert.Equal(t, tc.ExpectedError, err.Error())
 			}
diff --git a/controllers/metal3.io/baremetalhost_controller_test.go b/controllers/metal3.io/baremetalhost_controller_test.go
index b5f2f736..54885be8 100644
--- a/controllers/metal3.io/baremetalhost_controller_test.go
+++ b/controllers/metal3.io/baremetalhost_controller_test.go
@@ -4,7 +4,6 @@ import (
 	"context"
 	"encoding/base64"
 	"encoding/json"
-	"errors"
 	"fmt"
 	"testing"
 	"time"
@@ -16,6 +15,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/utils"
 	promutil "github.com/prometheus/client_golang/prometheus/testutil"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 	corev1 "k8s.io/api/core/v1"
 	k8serrors "k8s.io/apimachinery/pkg/api/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -539,14 +539,14 @@ func TestDoNotAddSecretFinalizersDuringDelete(t *testing.T) {
 	// Let the host reach the available state before deleting it
 	waitForProvisioningState(t, r, host, metal3api.StateAvailable)
 	err := doDeleteHost(host, r)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	waitForProvisioningState(t, r, host, metal3api.StateDeleting)
 
 	// The next reconcile loop will start the delete process,
 	// and as a first step the Ironic node will be removed
 	request := newRequest(host)
 	_, err = r.Reconcile(context.Background(), request)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
 	// The next reconcile loop remove the finalizers from
 	// both the host and the secret.
@@ -554,19 +554,19 @@ func TestDoNotAddSecretFinalizersDuringDelete(t *testing.T) {
 	// from its cache, so let's keep the latest updated
 	// host
 	err = r.Get(context.TODO(), request.NamespacedName, host)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	_, err = r.Reconcile(context.Background(), request)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
 	// To simulate an immediate reconciliation loop due the
 	// secret update (and a slow host deletion), let's push
 	// back the host in the client cache.
 	host.ResourceVersion = ""
 	err = r.Client.Create(context.TODO(), host)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	previousSecret := getHostSecret(t, r, host)
 	_, err = r.Reconcile(context.Background(), request)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
 	// Secret must remain unchanged
 	actualSecret := getHostSecret(t, r, host)
@@ -781,7 +781,7 @@ func TestRebootWithSuffixedAnnotation(t *testing.T) {
 
 	delete(host.Annotations, annotation)
 	err := r.Update(context.TODO(), host)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
 	tryReconcile(t, r, host,
 		func(host *metal3api.BareMetalHost, result reconcile.Result) bool {
@@ -820,13 +820,13 @@ func TestRebootWithSuffixedAnnotationPowerOffDisabled(t *testing.T) {
 	)
 
 	assert.True(t, host.Status.PoweredOn)
-	assert.Equal(t, fix.RebootCalled, false)
+	assert.False(t, fix.RebootCalled)
 
 	// Add the reboot annotation
 	host.Annotations = make(map[string]string)
 	host.Annotations[metal3api.RebootAnnotationPrefix] = "{\"mode\":\"soft\"}"
 	err := r.Update(context.TODO(), host)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
 	tryReconcile(t, r, host,
 		func(host *metal3api.BareMetalHost, result reconcile.Result) bool {
@@ -836,7 +836,7 @@ func TestRebootWithSuffixedAnnotationPowerOffDisabled(t *testing.T) {
 	)
 
 	assert.True(t, host.Status.PoweredOn)
-	assert.Equal(t, fix.RebootCalled, true)
+	assert.True(t, fix.RebootCalled)
 }
 
 // TestRebootWithServicing tests full reboot cycle with suffixless
@@ -1818,13 +1818,13 @@ func TestProvisionerIsReady(t *testing.T) {
 	fix := fixture.Fixture{BecomeReadyCounter: 5}
 	r := newTestReconcilerWithFixture(&fix, host)
 
-	assert.Equal(t, 0.0, promutil.ToFloat64(provisionerNotReady))
+	assert.InDelta(t, 0.0, promutil.ToFloat64(provisionerNotReady), 0.01)
 	tryReconcile(t, r, host,
 		func(host *metal3api.BareMetalHost, result reconcile.Result) bool {
 			return host.Status.Provisioning.State != metal3api.StateNone
 		},
 	)
-	assert.Equal(t, 4.0, promutil.ToFloat64(provisionerNotReady))
+	assert.InDelta(t, 4.0, promutil.ToFloat64(provisionerNotReady), 0.01)
 }
 
 func TestUpdateEventHandler(t *testing.T) {
@@ -1970,7 +1970,7 @@ func TestErrorCountIncrementsAlways(t *testing.T) {
 	errorTypes := []metal3api.ErrorType{metal3api.RegistrationError, metal3api.InspectionError, metal3api.ProvisioningError, metal3api.PowerManagementError}
 
 	b := &metal3api.BareMetalHost{}
-	assert.Equal(t, b.Status.ErrorCount, 0)
+	assert.Equal(t, 0, b.Status.ErrorCount)
 
 	for _, c := range errorTypes {
 		before := b.Status.ErrorCount
@@ -2252,7 +2252,7 @@ func TestUpdateRAID(t *testing.T) {
 			assert.Equal(t, c.dirty, dirty)
 			assert.Equal(t, c.expected, host.Status.Provisioning.RAID)
 			dirty, _, _ = getHostProvisioningSettings(&host, info)
-			assert.Equal(t, false, dirty)
+			assert.False(t, dirty)
 		})
 	}
 }
@@ -2276,7 +2276,7 @@ func TestInvalidBMHCanBeDeleted(t *testing.T) {
 	assert.Equal(t, "malformed url", host.Status.ErrorMessage)
 
 	err := doDeleteHost(host, r)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
 	tryReconcile(t, r, host, func(host *metal3api.BareMetalHost, result reconcile.Result) bool {
 		return host == nil
@@ -2418,12 +2418,12 @@ func TestGetPreprovImageNoFormats(t *testing.T) {
 
 	imgData, err := r.getPreprovImage(i, nil)
 
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	assert.Nil(t, imgData)
 
 	imgData, err = r.getPreprovImage(i, []metal3api.ImageFormat{})
-	assert.True(t, errors.As(err, &imageBuildError{}))
-	assert.EqualError(t, err, "no acceptable formats for preprovisioning image")
+	require.EqualError(t, err, "no acceptable formats for preprovisioning image")
+	require.ErrorAs(t, err, &imageBuildError{})
 	assert.Nil(t, imgData)
 
 	assert.Error(t, r.Client.Get(context.TODO(), client.ObjectKey{
@@ -2444,11 +2444,11 @@ func TestGetPreprovImageCreateUpdate(t *testing.T) {
 	i := makeReconcileInfo(host)
 
 	imgData, err := r.getPreprovImage(i, []metal3api.ImageFormat{"iso"})
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	assert.Nil(t, imgData)
 
 	img := metal3api.PreprovisioningImage{}
-	assert.NoError(t, r.Client.Get(context.TODO(), client.ObjectKey{
+	require.NoError(t, r.Client.Get(context.TODO(), client.ObjectKey{
 		Name:      host.Name,
 		Namespace: host.Namespace,
 	},
@@ -2462,10 +2462,10 @@ func TestGetPreprovImageCreateUpdate(t *testing.T) {
 	host.Labels["cat.metal3.io"] = "meow"
 
 	imgData, err = r.getPreprovImage(i, []metal3api.ImageFormat{"iso"})
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	assert.Nil(t, imgData)
 
-	assert.NoError(t, r.Client.Get(context.TODO(), client.ObjectKey{
+	require.NoError(t, r.Client.Get(context.TODO(), client.ObjectKey{
 		Name:      host.Name,
 		Namespace: host.Namespace,
 	},
@@ -2508,7 +2508,7 @@ func TestGetPreprovImage(t *testing.T) {
 	i := makeReconcileInfo(host)
 
 	imgData, err := r.getPreprovImage(i, acceptFormats)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	assert.NotNil(t, imgData)
 	assert.Equal(t, imageURL, imgData.ImageURL)
 	assert.Equal(t, metal3api.ImageFormatISO, imgData.Format)
@@ -2545,7 +2545,7 @@ func TestGetPreprovImageNotCurrent(t *testing.T) {
 	i := makeReconcileInfo(host)
 
 	imgData, err := r.getPreprovImage(i, []metal3api.ImageFormat{metal3api.ImageFormatISO})
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	assert.Nil(t, imgData)
 }
 
@@ -2821,10 +2821,10 @@ func TestPreprovImageAvailable(t *testing.T) {
 			}
 			available, err := r.preprovImageAvailable(makeReconcileInfo(host), &image)
 			if tc.BuildError {
-				assert.EqualError(t, err, "oops")
-				assert.True(t, errors.As(err, &imageBuildError{}))
+				require.EqualError(t, err, "oops")
+				require.ErrorAs(t, err, &imageBuildError{})
 			} else {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			}
 			assert.Equal(t, tc.Available, available)
 		})
@@ -2873,7 +2873,7 @@ func TestHostFirmwareSettings(t *testing.T) {
 
 			hfs := newHostFirmwareSettings(host, tc.Conditions)
 			err := r.Create(context.TODO(), hfs)
-			assert.NoError(t, err)
+			require.NoError(t, err)
 
 			dirty, _, err := r.getHostFirmwareSettings(i)
 			if err != nil {
@@ -2942,7 +2942,7 @@ func TestHFSTransitionToPreparing(t *testing.T) {
 	}
 
 	err := r.Update(context.TODO(), hfs)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
 	waitForProvisioningState(t, r, host, metal3api.StatePreparing)
 }
@@ -2975,7 +2975,7 @@ func TestHFSEmptyStatusSettings(t *testing.T) {
 	}
 
 	err := r.Update(context.TODO(), hfs)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 
 	tryReconcile(t, r, host,
 		func(host *metal3api.BareMetalHost, result reconcile.Result) bool {
@@ -2992,7 +2992,7 @@ func TestHFSEmptyStatusSettings(t *testing.T) {
 	}
 
 	err = r.Update(context.TODO(), hfs)
-	assert.NoError(t, err)
+	require.NoError(t, err)
 	tryReconcile(t, r, host,
 		func(host *metal3api.BareMetalHost, result reconcile.Result) bool {
 			return host.Status.Provisioning.State == metal3api.StateAvailable
diff --git a/controllers/metal3.io/host_config_data_test.go b/controllers/metal3.io/host_config_data_test.go
index f7d9ac4a..0f0f26a9 100644
--- a/controllers/metal3.io/host_config_data_test.go
+++ b/controllers/metal3.io/host_config_data_test.go
@@ -9,6 +9,7 @@ import (
 	metal3api "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1"
 	"github.com/metal3-io/baremetal-operator/pkg/secretutils"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/types"
 	ctrl "sigs.k8s.io/controller-runtime"
@@ -71,14 +72,14 @@ func TestLabelSecrets(t *testing.T) {
 
 			secret := newSecret(tc.name, map[string]string{"value": "somedata"})
 			err := c.Create(context.TODO(), secret)
-			assert.NoError(t, err)
+			require.NoError(t, err)
 
 			_, err = tc.getter(hcd)
-			assert.NoError(t, err)
+			require.NoError(t, err)
 
 			actualSecret := &corev1.Secret{}
 			err = c.Get(context.TODO(), types.NamespacedName{Name: tc.name, Namespace: namespace}, actualSecret)
-			assert.NoError(t, err)
+			require.NoError(t, err)
 			assert.Equal(t, "baremetal", actualSecret.Labels["environment.metal3.io"])
 		})
 	}
diff --git a/controllers/metal3.io/host_state_machine_test.go b/controllers/metal3.io/host_state_machine_test.go
index d96104a2..da8fc70e 100644
--- a/controllers/metal3.io/host_state_machine_test.go
+++ b/controllers/metal3.io/host_state_machine_test.go
@@ -1015,7 +1015,7 @@ func TestErrorCountClearedOnStateTransition(t *testing.T) {
 			hsm.ReconcileState(info)
 
 			assert.Equal(t, tt.TargetState, info.host.Status.Provisioning.State)
-			assert.Equal(t, info.host.Status.ErrorCount, 0)
+			assert.Equal(t, 0, info.host.Status.ErrorCount)
 		})
 	}
 }
diff --git a/controllers/metal3.io/hostfirmwarecomponents_test.go b/controllers/metal3.io/hostfirmwarecomponents_test.go
index 0faac062..da4229e0 100644
--- a/controllers/metal3.io/hostfirmwarecomponents_test.go
+++ b/controllers/metal3.io/hostfirmwarecomponents_test.go
@@ -9,6 +9,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/fixture"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	ctrl "sigs.k8s.io/controller-runtime"
 	"sigs.k8s.io/controller-runtime/pkg/client"
@@ -400,17 +401,17 @@ func TestStoreHostFirmwareComponents(t *testing.T) {
 			}
 
 			components, err := prov.GetFirmwareComponents()
-			assert.NoError(t, err)
+			require.NoError(t, err)
 
 			err = r.updateHostFirmware(info, components)
-			assert.NoError(t, err)
+			require.NoError(t, err)
 
 			// Check that resources get created or updated
 			key := client.ObjectKey{
 				Namespace: hfc.ObjectMeta.Namespace, Name: hfc.ObjectMeta.Name}
 			actual := &metal3api.HostFirmwareComponents{}
 			err = r.Client.Get(ctx, key, actual)
-			assert.Equal(t, nil, err)
+			require.NoError(t, err)
 
 			assert.Equal(t, tc.ExpectedComponents.Spec.Updates, actual.Spec.Updates)
 			assert.Equal(t, tc.ExpectedComponents.Status.Components, actual.Status.Components)
@@ -510,7 +511,7 @@ func TestValidadeHostFirmwareComponents(t *testing.T) {
 			}
 			errors := r.validateHostFirmwareComponents(&info)
 			if len(errors) == 0 {
-				assert.Equal(t, tc.ExpectedErrors[0], "")
+				assert.Equal(t, "", tc.ExpectedErrors[0])
 			} else {
 				for i := range errors {
 					assert.Equal(t, tc.ExpectedErrors[i], errors[i].Error())
diff --git a/controllers/metal3.io/hostfirmwaresettings_test.go b/controllers/metal3.io/hostfirmwaresettings_test.go
index 8b7aa387..a119b1c4 100644
--- a/controllers/metal3.io/hostfirmwaresettings_test.go
+++ b/controllers/metal3.io/hostfirmwaresettings_test.go
@@ -9,6 +9,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/fixture"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/util/intstr"
 	ctrl "sigs.k8s.io/controller-runtime"
@@ -501,21 +502,21 @@ func TestStoreHostFirmwareSettings(t *testing.T) {
 				firmwareSchema.Spec.Schema = getCurrentSchemaSettings()
 
 				err := r.Client.Create(ctx, firmwareSchema)
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			}
 
 			currentSettings, schema, err := prov.GetFirmwareSettings(true)
-			assert.Equal(t, nil, err)
+			require.NoError(t, err)
 
 			err = r.updateHostFirmwareSettings(currentSettings, schema, info)
-			assert.Equal(t, nil, err)
+			require.NoError(t, err)
 
 			// Check that resources get created or updated
 			key := client.ObjectKey{
 				Namespace: hfs.ObjectMeta.Namespace, Name: hfs.ObjectMeta.Name}
 			actualSettings := &metal3api.HostFirmwareSettings{}
 			err = r.Client.Get(ctx, key, actualSettings)
-			assert.Equal(t, nil, err)
+			require.NoError(t, err)
 
 			// Use the same time for expected and actual
 			currentTime := metav1.Now()
@@ -531,7 +532,7 @@ func TestStoreHostFirmwareSettings(t *testing.T) {
 				Namespace: hfs.ObjectMeta.Namespace, Name: schemaName}
 			actualSchema := &metal3api.FirmwareSchema{}
 			err = r.Client.Get(ctx, key, actualSchema)
-			assert.Equal(t, nil, err)
+			require.NoError(t, err)
 			var expectedSchema *metal3api.FirmwareSchema
 			if tc.CreateSchemaResource {
 				expectedSchema = getExpectedSchemaTwoOwners()
@@ -639,7 +640,7 @@ func TestValidateHostFirmwareSettings(t *testing.T) {
 
 			errors := r.validateHostFirmwareSettings(info, &info.hfs.Status, getExpectedSchema())
 			if len(errors) == 0 {
-				assert.Equal(t, tc.ExpectedError, "")
+				assert.Equal(t, "", tc.ExpectedError)
 			} else {
 				for _, error := range errors {
 					assert.Equal(t, tc.ExpectedError, error.Error())
diff --git a/pkg/provisioner/ironic/adopt_test.go b/pkg/provisioner/ironic/adopt_test.go
index 7bff4d77..9a6c3fb2 100644
--- a/pkg/provisioner/ironic/adopt_test.go
+++ b/pkg/provisioner/ironic/adopt_test.go
@@ -10,6 +10,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestAdopt(t *testing.T) {
@@ -140,9 +141,9 @@ func TestAdopt(t *testing.T) {
 			assert.Equal(t, tc.expectedDirty, result.Dirty)
 			assert.Equal(t, time.Second*time.Duration(tc.expectedRequestAfter), result.RequeueAfter)
 			if !tc.expectedError {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 			}
 		})
 	}
diff --git a/pkg/provisioner/ironic/bios_test.go b/pkg/provisioner/ironic/bios_test.go
index 2e28358a..3b1a28b9 100644
--- a/pkg/provisioner/ironic/bios_test.go
+++ b/pkg/provisioner/ironic/bios_test.go
@@ -8,6 +8,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestGetFirmwareSettings(t *testing.T) {
@@ -114,9 +115,9 @@ func TestGetFirmwareSettings(t *testing.T) {
 			assert.Equal(t, tc.expectedSchemaMap, schemaMap)
 
 			if tc.expectedError == "" {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 				assert.Regexp(t, tc.expectedError, err.Error())
 			}
 		})
diff --git a/pkg/provisioner/ironic/clients/client_test.go b/pkg/provisioner/ironic/clients/client_test.go
index 208bd83b..9638b980 100644
--- a/pkg/provisioner/ironic/clients/client_test.go
+++ b/pkg/provisioner/ironic/clients/client_test.go
@@ -6,6 +6,7 @@ import (
 
 	"github.com/gophercloud/gophercloud/v2"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestIronicClientInvalidAuthType(t *testing.T) {
@@ -47,7 +48,7 @@ func TestIronicClientInvalidAuthType(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			gotClient, err := IronicClient(tt.args.ironicEndpoint, tt.args.auth, tt.args.tls)
-			assert.Error(t, err)
+			require.Error(t, err)
 			assert.Nil(t, gotClient)
 		})
 	}
@@ -157,10 +158,10 @@ func TestIronicClientValidAuthType(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			gotClient, err := IronicClient(tt.args.ironicEndpoint, tt.args.auth, tt.args.tls)
-			assert.Nil(t, err)
+			require.NoError(t, err)
 			assert.NotNil(t, gotClient)
 			assert.Equalf(t, gotClient.Endpoint, tt.wantClient.Endpoint, "IronicClient() gotClient = %v, want %v", gotClient.Endpoint, tt.wantClient.Endpoint)
-			assert.Falsef(t, !reflect.DeepEqual(gotClient.MoreHeaders, tt.wantClient.MoreHeaders), "IronicClient() gotClient = %v, want %v", gotClient.MoreHeaders, tt.wantClient.MoreHeaders)
+			assert.Truef(t, reflect.DeepEqual(gotClient.MoreHeaders, tt.wantClient.MoreHeaders), "IronicClient() gotClient = %v, want %v", gotClient.MoreHeaders, tt.wantClient.MoreHeaders)
 		})
 	}
 }
@@ -232,7 +233,7 @@ func Test_updateHTTPClient(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			err := updateHTTPClient(tt.args.client, tt.args.tlsConf)
-			assert.Nil(t, err)
+			require.NoError(t, err)
 		})
 	}
 }
diff --git a/pkg/provisioner/ironic/clients/updateopts_test.go b/pkg/provisioner/ironic/clients/updateopts_test.go
index a51f78c2..6a7a23f9 100644
--- a/pkg/provisioner/ironic/clients/updateopts_test.go
+++ b/pkg/provisioner/ironic/clients/updateopts_test.go
@@ -248,7 +248,7 @@ func TestOptionValueEqual(t *testing.T) {
 				ne = "!"
 			}
 			assert.Equal(t, c.Equal, optionValueEqual(c.Before, c.After),
-				fmt.Sprintf("%v %s= %v", c.Before, ne, c.After))
+				"%v %s= %v", c.Before, ne, c.After)
 		})
 	}
 }
@@ -396,7 +396,7 @@ func TestTopLevelUpdateOpt(t *testing.T) {
 
 	u = UpdateOptsBuilder(logf.Log)
 	u.SetTopLevelOpt("foo", "bar", "bar")
-	assert.Len(t, u.Updates, 0)
+	assert.Empty(t, u.Updates)
 }
 
 func TestPropertiesUpdateOpts(t *testing.T) {
diff --git a/pkg/provisioner/ironic/configdrive_test.go b/pkg/provisioner/ironic/configdrive_test.go
index 2f463c5a..422f414a 100644
--- a/pkg/provisioner/ironic/configdrive_test.go
+++ b/pkg/provisioner/ironic/configdrive_test.go
@@ -11,6 +11,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestEmpty(t *testing.T) {
@@ -157,7 +158,7 @@ func TestEmpty(t *testing.T) {
 			}
 
 			assert.Equal(t, tc.expected, result)
-			assert.NoError(t, err)
+			require.NoError(t, err)
 		})
 	}
 }
diff --git a/pkg/provisioner/ironic/delete_test.go b/pkg/provisioner/ironic/delete_test.go
index 9866b1bc..99d8138c 100644
--- a/pkg/provisioner/ironic/delete_test.go
+++ b/pkg/provisioner/ironic/delete_test.go
@@ -11,6 +11,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 type TestFunc func(string)
@@ -203,9 +204,9 @@ func deleteTest(t *testing.T, detach bool) {
 			}
 
 			if tc.expectedError == "" {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 				assert.Regexp(t, tc.expectedError, err.Error())
 			}
 		})
diff --git a/pkg/provisioner/ironic/factory_test.go b/pkg/provisioner/ironic/factory_test.go
index 674ebf68..db47d8b2 100644
--- a/pkg/provisioner/ironic/factory_test.go
+++ b/pkg/provisioner/ironic/factory_test.go
@@ -6,6 +6,7 @@ import (
 
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 type EnvFixture struct {
@@ -183,7 +184,7 @@ func TestLoadConfigFromEnv(t *testing.T) {
 				if expectedError != "" {
 					assert.Regexp(t, expectedError, err)
 				} else {
-					assert.Nil(t, err)
+					require.NoError(t, err)
 					tc.env.VerifyConfig(t, config, tc.forcePersistent)
 				}
 			})
@@ -215,9 +216,9 @@ func TestLoadEndpointsFromEnv(t *testing.T) {
 			tc.env.SetUp()
 			i, err := loadEndpointsFromEnv()
 			if tc.expectError {
-				assert.NotNil(t, err)
+				assert.Error(t, err)
 			} else {
-				assert.Nil(t, err)
+				require.NoError(t, err)
 				tc.env.VerifyEndpoints(t, i)
 			}
 		})
diff --git a/pkg/provisioner/ironic/inspecthardware_test.go b/pkg/provisioner/ironic/inspecthardware_test.go
index fe761df4..3890b871 100644
--- a/pkg/provisioner/ironic/inspecthardware_test.go
+++ b/pkg/provisioner/ironic/inspecthardware_test.go
@@ -13,6 +13,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestInspectHardware(t *testing.T) {
@@ -230,9 +231,9 @@ func TestInspectHardware(t *testing.T) {
 			}
 			assert.Equal(t, tc.expectedPublish, publishedMsg)
 			if tc.expectedError == "" {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 				assert.Regexp(t, tc.expectedError, err.Error())
 			}
 		})
diff --git a/pkg/provisioner/ironic/ironic_test.go b/pkg/provisioner/ironic/ironic_test.go
index b6c1afb2..35a82b4d 100644
--- a/pkg/provisioner/ironic/ironic_test.go
+++ b/pkg/provisioner/ironic/ironic_test.go
@@ -14,6 +14,7 @@ import (
 	// types.
 	_ "github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testbmc"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	logf "sigs.k8s.io/controller-runtime/pkg/log"
 	logz "sigs.k8s.io/controller-runtime/pkg/log/zap"
@@ -134,6 +135,6 @@ func TestNewNoBMCDetails(t *testing.T) {
 
 	factory := newTestProvisionerFactory()
 	prov, err := factory.NewProvisioner(context.TODO(), provisioner.BuildHostData(host, bmc.Credentials{}), nullEventPublisher)
-	assert.Equal(t, nil, err)
-	assert.NotEqual(t, nil, prov)
+	require.NoError(t, err)
+	assert.NotNil(t, prov)
 }
diff --git a/pkg/provisioner/ironic/power_test.go b/pkg/provisioner/ironic/power_test.go
index 90d80230..3f0cff5f 100644
--- a/pkg/provisioner/ironic/power_test.go
+++ b/pkg/provisioner/ironic/power_test.go
@@ -12,6 +12,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestPowerOn(t *testing.T) {
@@ -122,9 +123,9 @@ func TestPowerOn(t *testing.T) {
 			assert.Equal(t, tc.expectedDirty, result.Dirty)
 			assert.Equal(t, time.Second*time.Duration(tc.expectedRequestAfter), result.RequeueAfter)
 			if !tc.expectedError {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 			}
 			if tc.expectedErrorResult {
 				assert.Contains(t, result.ErrorMessage, "PowerOn operation failed")
@@ -272,9 +273,9 @@ func TestPowerOff(t *testing.T) {
 			assert.Equal(t, tc.expectedDirty, result.Dirty)
 			assert.Equal(t, time.Second*time.Duration(tc.expectedRequestAfter), result.RequeueAfter)
 			if !tc.expectedError {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 			}
 			if tc.expectedErrorResult {
 				assert.Contains(t, result.ErrorMessage, "hard power off failed")
@@ -312,14 +313,14 @@ func TestSoftPowerOffFallback(t *testing.T) {
 	}
 
 	_, err = prov.PowerOff(metal3api.RebootModeSoft, false)
-	assert.Error(t, err)
+	require.Error(t, err)
 	assert.False(t, errors.As(err, &softPowerOffUnsupportedError{}))
 
 	_, err = prov.changePower(&node, nodes.PowerOff)
-	assert.Error(t, err)
+	require.Error(t, err)
 	assert.False(t, errors.As(err, &softPowerOffUnsupportedError{}))
 
 	_, err = prov.changePower(&node, nodes.SoftPowerOff)
-	assert.Error(t, err)
+	require.Error(t, err)
 	assert.ErrorAs(t, err, &softPowerOffUnsupportedError{})
 }
diff --git a/pkg/provisioner/ironic/prepare_test.go b/pkg/provisioner/ironic/prepare_test.go
index f3037748..87073b8b 100644
--- a/pkg/provisioner/ironic/prepare_test.go
+++ b/pkg/provisioner/ironic/prepare_test.go
@@ -12,6 +12,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 type RAIDTestBMC struct{}
@@ -204,9 +205,9 @@ func TestPrepare(t *testing.T) {
 			assert.Equal(t, tc.expectedDirty, result.Dirty)
 			assert.Equal(t, time.Second*time.Duration(tc.expectedRequestAfter), result.RequeueAfter)
 			if !tc.expectedError {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 			}
 		})
 	}
diff --git a/pkg/provisioner/ironic/provision_test.go b/pkg/provisioner/ironic/provision_test.go
index 2e3098db..72ee57b7 100644
--- a/pkg/provisioner/ironic/provision_test.go
+++ b/pkg/provisioner/ironic/provision_test.go
@@ -16,6 +16,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testbmc"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/util/intstr"
 	"k8s.io/utils/ptr"
@@ -184,9 +185,9 @@ func TestProvision(t *testing.T) {
 			assert.Equal(t, time.Second*time.Duration(tc.expectedRequestAfter), result.RequeueAfter)
 			assert.Equal(t, tc.expectedErrorMessage, result.ErrorMessage)
 			if !tc.expectedError {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 			}
 
 			lastProvOp := tc.ironic.GetLastNodeStatesProvisionUpdateRequestFor(nodeUUID)
@@ -308,9 +309,9 @@ func TestDeprovision(t *testing.T) {
 			assert.Equal(t, tc.expectedErrorMessage, result.ErrorMessage != "")
 			assert.Equal(t, time.Second*time.Duration(tc.expectedRequestAfter), result.RequeueAfter)
 			if !tc.expectedError {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 			}
 		})
 	}
@@ -685,7 +686,7 @@ func TestBuildCleanSteps(t *testing.T) {
 				TargetFirmwareSettings: tc.desiredSettings,
 			})
 
-			assert.Equal(t, nil, err)
+			require.NoError(t, err)
 			if cleanSteps == nil {
 				assert.Equal(t, tc.expectedSettings, []map[string]interface{}(nil))
 			} else {
@@ -755,9 +756,9 @@ func TestGetUpdateOptsForNodeWithRootHints(t *testing.T) {
 			}
 			t.Logf("update: %v", update)
 			if e.Map != nil {
-				assert.Equal(t, e.Map, update.Value, fmt.Sprintf("%s does not match", e.Path))
+				assert.Equal(t, e.Map, update.Value, "%s does not match", e.Path)
 			} else {
-				assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s does not match", e.Path))
+				assert.Equal(t, e.Value, update.Value, "%s does not match", e.Path)
 			}
 		})
 	}
@@ -856,7 +857,7 @@ func TestGetUpdateOptsForNodeVirtual(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s does not match", e.Path)
 		})
 	}
 }
@@ -950,7 +951,7 @@ func TestGetUpdateOptsForNodeDell(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s does not match", e.Path)
 		})
 	}
 }
@@ -1011,7 +1012,7 @@ func TestGetUpdateOptsForNodeLiveIso(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s does not match", e.Path)
 		})
 	}
 }
@@ -1086,8 +1087,8 @@ func TestGetUpdateOptsForNodeImageToLiveIso(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s value does not match", e.Path))
-			assert.Equal(t, e.Op, update.Op, fmt.Sprintf("%s operation does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s value does not match", e.Path)
+			assert.Equal(t, e.Op, update.Op, "%s operation does not match", e.Path)
 		})
 	}
 }
@@ -1165,8 +1166,8 @@ func TestGetUpdateOptsForNodeLiveIsoToImage(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s value does not match", e.Path))
-			assert.Equal(t, e.Op, update.Op, fmt.Sprintf("%s operation does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s value does not match", e.Path)
+			assert.Equal(t, e.Op, update.Op, "%s operation does not match", e.Path)
 		})
 	}
 }
@@ -1223,7 +1224,7 @@ func TestGetUpdateOptsForNodeCustomDeploy(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s does not match", e.Path)
 		})
 	}
 }
@@ -1284,7 +1285,7 @@ func TestGetUpdateOptsForNodeCustomDeployWithImage(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s does not match", e.Path)
 		})
 	}
 }
@@ -1355,8 +1356,8 @@ func TestGetUpdateOptsForNodeImageToCustomDeploy(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s value does not match", e.Path))
-			assert.Equal(t, e.Op, update.Op, fmt.Sprintf("%s operation does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s value does not match", e.Path)
+			assert.Equal(t, e.Op, update.Op, "%s operation does not match", e.Path)
 		})
 	}
 }
@@ -1440,7 +1441,7 @@ func TestGetUpdateOptsForNodeSecureBoot(t *testing.T) {
 				return
 			}
 			t.Logf("update: %v", update)
-			assert.Equal(t, e.Value, update.Value, fmt.Sprintf("%s does not match", e.Path))
+			assert.Equal(t, e.Value, update.Value, "%s does not match", e.Path)
 		})
 	}
 }
@@ -1552,7 +1553,7 @@ func TestBuildCleanStepsForUpdateFirmware(t *testing.T) {
 				TargetFirmwareComponents: tc.targetFirmwareComponents,
 			})
 
-			assert.Equal(t, nil, err)
+			require.NoError(t, err)
 			if tc.targetFirmwareComponents == nil {
 				assert.Equal(t, tc.expectedFirmwareUpdates, []map[string]string(nil))
 			} else {
diff --git a/pkg/provisioner/ironic/provisioncapacity_test.go b/pkg/provisioner/ironic/provisioncapacity_test.go
index cbc65187..db7b699f 100644
--- a/pkg/provisioner/ironic/provisioncapacity_test.go
+++ b/pkg/provisioner/ironic/provisioncapacity_test.go
@@ -9,6 +9,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestHasCapacity(t *testing.T) {
@@ -108,9 +109,9 @@ func TestHasCapacity(t *testing.T) {
 			assert.Equal(t, tc.expectedHasCapacity, result)
 
 			if tc.expectedError == "" {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 				assert.Regexp(t, tc.expectedError, err.Error())
 			}
 		})
diff --git a/pkg/provisioner/ironic/ready_test.go b/pkg/provisioner/ironic/ready_test.go
index 03791c66..a36f25fe 100644
--- a/pkg/provisioner/ironic/ready_test.go
+++ b/pkg/provisioner/ironic/ready_test.go
@@ -8,6 +8,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestProvisionerIsReady(t *testing.T) {
@@ -75,7 +76,7 @@ func TestProvisionerIsReady(t *testing.T) {
 			if tc.expectedError != "" {
 				assert.Regexp(t, tc.expectedError, err, "error message")
 			} else {
-				assert.Nil(t, err)
+				require.NoError(t, err)
 				assert.Equal(t, tc.expectedIsReady, ready, "ready flag")
 			}
 		})
diff --git a/pkg/provisioner/ironic/register_test.go b/pkg/provisioner/ironic/register_test.go
index 307a52f8..e6c302b5 100644
--- a/pkg/provisioner/ironic/register_test.go
+++ b/pkg/provisioner/ironic/register_test.go
@@ -13,6 +13,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestRegisterNoMAC(t *testing.T) {
@@ -103,7 +104,7 @@ func TestRegisterCreateNodeNoImage(t *testing.T) {
 	assert.Equal(t, "", result.ErrorMessage)
 	assert.NotEqual(t, "", createdNode.UUID)
 	assert.Equal(t, createdNode.UUID, provID)
-	assert.Equal(t, createdNode.DeployInterface, "")
+	assert.Equal(t, "", createdNode.DeployInterface)
 	assert.Equal(t, "agent", createdNode.InspectInterface)
 }
 
@@ -176,7 +177,7 @@ func TestRegisterCreateWithImage(t *testing.T) {
 	}
 	assert.Equal(t, "", result.ErrorMessage)
 	assert.Equal(t, createdNode.UUID, provID)
-	assert.Equal(t, createdNode.DeployInterface, "")
+	assert.Equal(t, "", createdNode.DeployInterface)
 	updates, _ := ironic.GetLastRequestFor("/v1/nodes/node-0", http.MethodPatch)
 	assert.Contains(t, updates, "/instance_info/image_source")
 	assert.Contains(t, updates, host.Spec.Image.URL)
@@ -212,7 +213,7 @@ func TestRegisterCreateWithLiveIso(t *testing.T) {
 	}
 	assert.Equal(t, "", result.ErrorMessage)
 	assert.Equal(t, createdNode.UUID, provID)
-	assert.Equal(t, createdNode.DeployInterface, "ramdisk")
+	assert.Equal(t, "ramdisk", createdNode.DeployInterface)
 	updates, _ := ironic.GetLastRequestFor("/v1/nodes/node-0", http.MethodPatch)
 	assert.Contains(t, updates, "/instance_info/boot_iso")
 	assert.Contains(t, updates, host.Spec.Image.URL)
@@ -285,7 +286,7 @@ func TestRegisterExistingNodeNameUpdate(t *testing.T) {
 		t.Fatalf("error from Register: %s", err)
 	}
 	assert.Equal(t, "", result.ErrorMessage)
-	assert.Equal(t, false, result.Dirty)
+	assert.False(t, result.Dirty)
 }
 
 func TestRegisterExistingNodeContinue(t *testing.T) {
@@ -358,8 +359,8 @@ func TestRegisterExistingNodeContinue(t *testing.T) {
 				t.Fatalf("error from Register: %s", err)
 			}
 			assert.Equal(t, "", result.ErrorMessage)
-			assert.Equal(t, false, result.Dirty)
-			assert.Len(t, ironic.GetLastNodeUpdateRequestFor("uuid"), 0)
+			assert.False(t, result.Dirty)
+			assert.Empty(t, ironic.GetLastNodeUpdateRequestFor("uuid"))
 		})
 	}
 }
@@ -538,8 +539,8 @@ func TestRegisterExistingSteadyStateNoUpdate(t *testing.T) {
 				t.Fatalf("error from Register: %s", err)
 			}
 			assert.Equal(t, "", result.ErrorMessage)
-			assert.Equal(t, false, result.Dirty)
-			assert.Len(t, ironic.GetLastNodeUpdateRequestFor("uuid"), 0)
+			assert.False(t, result.Dirty)
+			assert.Empty(t, ironic.GetLastNodeUpdateRequestFor("uuid"))
 		})
 	}
 }
@@ -777,8 +778,8 @@ func TestRegisterExistingPortButHasName(t *testing.T) {
 	}
 
 	res, _, err := prov.Register(provisioner.ManagementAccessData{}, false, false)
-	assert.Nil(t, err)
-	assert.Equal(t, res.ErrorMessage, "MAC address 11:11:11:11:11:11 conflicts with existing node wrong-name")
+	require.NoError(t, err)
+	assert.Equal(t, "MAC address 11:11:11:11:11:11 conflicts with existing node wrong-name", res.ErrorMessage)
 }
 
 func TestRegisterAddTwoHostsWithSameMAC(t *testing.T) {
@@ -1048,7 +1049,7 @@ func TestPreprovisioningImageFormats(t *testing.T) {
 
 			fmts, err := prov.PreprovisioningImageFormats()
 
-			assert.NoError(t, err)
+			require.NoError(t, err)
 			assert.Equal(t, tc.Expected, fmts)
 		})
 	}
@@ -1386,7 +1387,7 @@ func TestSetExternalURLIPv4(t *testing.T) {
 	driverInfo := make(map[string]interface{}, 0)
 	updatedDriverInfo := setExternalURL(prov, driverInfo)
 
-	assert.Equal(t, nil, updatedDriverInfo["external_http_url"])
+	assert.Nil(t, updatedDriverInfo["external_http_url"])
 }
 
 func TestSetExternalURLRemoving(t *testing.T) {
@@ -1415,7 +1416,7 @@ func TestSetExternalURLRemoving(t *testing.T) {
 	driverInfo["external_http_url"] = "non-empty"
 	updatedDriverInfo := setExternalURL(prov, driverInfo)
 
-	assert.Equal(t, nil, updatedDriverInfo["external_http_url"])
+	assert.Nil(t, updatedDriverInfo["external_http_url"])
 }
 
 func TestRegisterDisablePowerOff(t *testing.T) {
diff --git a/pkg/provisioner/ironic/servicing_test.go b/pkg/provisioner/ironic/servicing_test.go
index a878afce..dba9679f 100644
--- a/pkg/provisioner/ironic/servicing_test.go
+++ b/pkg/provisioner/ironic/servicing_test.go
@@ -6,14 +6,14 @@ import (
 	"time"
 
 	"github.com/gophercloud/gophercloud/v2/openstack/baremetal/v1/nodes"
-	"github.com/stretchr/testify/assert"
-	"k8s.io/apimachinery/pkg/util/intstr"
-
 	metal3api "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1"
 	"github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	"k8s.io/apimachinery/pkg/util/intstr"
 )
 
 type BIOSTestBMC struct{}
@@ -187,9 +187,9 @@ func TestService(t *testing.T) {
 			assert.Equal(t, tc.expectedDirty, result.Dirty)
 			assert.Equal(t, time.Second*time.Duration(tc.expectedRequestAfter), result.RequeueAfter)
 			if !tc.expectedError {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 			}
 		})
 	}
diff --git a/pkg/provisioner/ironic/updatehardwarestate_test.go b/pkg/provisioner/ironic/updatehardwarestate_test.go
index 20658ce5..ecb83072 100644
--- a/pkg/provisioner/ironic/updatehardwarestate_test.go
+++ b/pkg/provisioner/ironic/updatehardwarestate_test.go
@@ -9,6 +9,7 @@ import (
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/clients"
 	"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic/testserver"
 	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
 func TestUpdateHardwareState(t *testing.T) {
@@ -133,9 +134,9 @@ func TestUpdateHardwareState(t *testing.T) {
 
 			assert.Equal(t, tc.expectedPublish, publishedMsg)
 			if tc.expectedError == "" {
-				assert.NoError(t, err)
+				require.NoError(t, err)
 			} else {
-				assert.Error(t, err)
+				require.Error(t, err)
 				assert.Regexp(t, tc.expectedError, err.Error())
 			}
 		})
diff --git a/test/go.mod b/test/go.mod
index 70f97be0..719276e7 100644
--- a/test/go.mod
+++ b/test/go.mod
@@ -128,7 +128,7 @@ require (
 	go.uber.org/multierr v1.11.0 // indirect
 	golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
 	golang.org/x/mod v0.23.0 // indirect
-	golang.org/x/net v0.37.0 // indirect
+	golang.org/x/net v0.38.0 // indirect
 	golang.org/x/oauth2 v0.27.0 // indirect
 	golang.org/x/sync v0.12.0 // indirect
 	golang.org/x/sys v0.31.0 // indirect
diff --git a/test/go.sum b/test/go.sum
index b7f0422d..82f42753 100644
--- a/test/go.sum
+++ b/test/go.sum
@@ -307,8 +307,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
-golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
 golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
 golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=