Browse code

client: New: ignore nil-Opt instead of panicking

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2026/03/17 02:52:38
Showing 3 changed files
... ...
@@ -207,6 +207,9 @@ func New(ops ...Opt) (*Client, error) {
207 207
 	cfg := &c.clientConfig
208 208
 
209 209
 	for _, op := range ops {
210
+		if op == nil {
211
+			continue
212
+		}
210 213
 		if err := op(cfg); err != nil {
211 214
 			return nil, err
212 215
 		}
... ...
@@ -13,6 +13,22 @@ import (
13 13
 	"gotest.tools/v3/skip"
14 14
 )
15 15
 
16
+func TestNewClientWithNilOpt(t *testing.T) {
17
+	defer func() {
18
+		if r := recover(); r != nil {
19
+			t.Errorf("should not panic on nil Opt: %v", r)
20
+		}
21
+	}()
22
+
23
+	client, err := New(nil)
24
+	assert.NilError(t, err)
25
+	assert.Check(t, client != nil)
26
+
27
+	client, err = New(Opt(nil))
28
+	assert.NilError(t, err)
29
+	assert.Check(t, client != nil)
30
+}
31
+
16 32
 func TestNewClientWithOpsFromEnv(t *testing.T) {
17 33
 	skip.If(t, runtime.GOOS == "windows")
18 34
 
... ...
@@ -207,6 +207,9 @@ func New(ops ...Opt) (*Client, error) {
207 207
 	cfg := &c.clientConfig
208 208
 
209 209
 	for _, op := range ops {
210
+		if op == nil {
211
+			continue
212
+		}
210 213
 		if err := op(cfg); err != nil {
211 214
 			return nil, err
212 215
 		}