Skip to content

Commit 526d130

Browse files
committed
fix
1 parent b4716a8 commit 526d130

2 files changed

Lines changed: 19 additions & 49 deletions

File tree

common_client.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,7 @@ func (o *httpClientOption) newRetryableHTTPClient() (*retryablehttp.Client, erro
120120
retryClient.HTTPClient.Timeout = o.timeout
121121
}
122122

123-
if retryClient.Logger == nil {
124-
retryClient.Logger = o.logger
125-
}
123+
retryClient.Logger = o.logger
126124

127125
transport, ok := retryClient.HTTPClient.Transport.(*http.Transport)
128126
if !ok {

common_client_test.go

Lines changed: 18 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"net/http"
88
"net/http/httptest"
99
"net/url"
10+
"os"
1011
"testing"
1112
"time"
1213

@@ -158,17 +159,29 @@ func TestUserAgent(t *testing.T) {
158159
}
159160

160161
func TestWithLogger(t *testing.T) {
162+
newJSONHandler := func() slog.Handler {
163+
return slog.NewJSONHandler(
164+
os.Stdout,
165+
&slog.HandlerOptions{
166+
AddSource: true,
167+
Level: slog.LevelError,
168+
},
169+
)
170+
}
161171
t.Run("WithLogger(nil) sets a discard logger on raw httpClientOption", func(t *testing.T) {
162172
opts := httpClientOption{}
163173
WithLogger(nil)(&opts)
164174
require.NotNil(t, opts.logger, "WithLogger(nil) should set a discard logger, not leave it nil")
175+
assert.Equal(t, slog.DiscardHandler, opts.logger.Handler(), "WithLogger(nil) should set a discard logger handler")
165176
})
166177

167178
t.Run("WithLogger(customLogger) assigns the provided logger", func(t *testing.T) {
168-
customLogger := slog.New(slog.DiscardHandler)
179+
handler := newJSONHandler()
180+
customLogger := slog.New(handler)
169181
opts := httpClientOption{}
170182
WithLogger(customLogger)(&opts)
171183
require.Equal(t, customLogger, opts.logger, "WithLogger should assign the provided logger")
184+
assert.Equal(t, handler, opts.logger.Handler(), "WithLogger should set the provided logger handler")
172185
})
173186

174187
t.Run("WithLogger(nil) propagates discard logger to retryable HTTP client", func(t *testing.T) {
@@ -177,59 +190,18 @@ func TestWithLogger(t *testing.T) {
177190
client, err := opts.newRetryableHTTPClient()
178191
require.NoError(t, err)
179192
assert.NotNil(t, client.Logger, "retryable client should have logger set from WithLogger(nil)")
193+
assert.Equal(t, slog.DiscardHandler, opts.logger.Handler(), "retryable client logger should be a discard logger from WithLogger(nil)")
180194
})
181195

182196
t.Run("WithLogger(customLogger) propagates custom logger to retryable HTTP client", func(t *testing.T) {
183-
customLogger := slog.New(slog.DiscardHandler)
197+
handler := newJSONHandler()
198+
customLogger := slog.New(handler)
184199
opts := httpClientOption{}
185200
WithLogger(customLogger)(&opts)
186201
client, err := opts.newRetryableHTTPClient()
187202
require.NoError(t, err)
188203
assert.NotNil(t, client.Logger, "retryable client should have logger set")
189-
})
190-
191-
t.Run("WithLogger(customLogger) propagates to custom retryable HTTP client", func(t *testing.T) {
192-
providedLogger := slog.New(slog.DiscardHandler)
193-
customRetryClient := retryablehttp.NewClient()
194-
customRetryClient.Logger = nil
195-
196-
opts := httpClientOption{}
197-
WithRetryableHTTPClint(customRetryClient)(&opts)
198-
WithLogger(providedLogger)(&opts)
199-
200-
retrievedRetryClient, err := opts.newRetryableHTTPClient()
201-
require.NoError(t, err)
202-
require.Equal(t, customRetryClient, retrievedRetryClient, "should use the provided custom retryable client")
203-
assert.Equal(t, providedLogger, retrievedRetryClient.Logger, "custom retryable client logger should be set from WithLogger")
204-
})
205-
206-
t.Run("WithLogger(nil) with custom retryable HTTP client is order-invariant", func(t *testing.T) {
207-
customRetryClientA := retryablehttp.NewClient()
208-
customRetryClientA.Logger = nil
209-
optsA := httpClientOption{}
210-
WithLogger(nil)(&optsA)
211-
WithRetryableHTTPClint(customRetryClientA)(&optsA)
212-
213-
retrievedA, err := optsA.newRetryableHTTPClient()
214-
require.NoError(t, err)
215-
require.Equal(t, customRetryClientA, retrievedA)
216-
require.NotNil(t, optsA.logger, "WithLogger(nil) should assign discard logger")
217-
assert.Equal(t, optsA.logger, retrievedA.Logger, "custom retryable client should receive logger from options")
218-
219-
customRetryClientB := retryablehttp.NewClient()
220-
customRetryClientB.Logger = nil
221-
optsB := httpClientOption{}
222-
WithRetryableHTTPClint(customRetryClientB)(&optsB)
223-
WithLogger(nil)(&optsB)
224-
225-
retrievedB, err := optsB.newRetryableHTTPClient()
226-
require.NoError(t, err)
227-
require.Equal(t, customRetryClientB, retrievedB)
228-
require.NotNil(t, optsB.logger, "WithLogger(nil) should assign discard logger")
229-
assert.Equal(t, optsB.logger, retrievedB.Logger, "custom retryable client should receive logger from options")
230-
231-
assert.NotNil(t, retrievedA.Logger)
232-
assert.NotNil(t, retrievedB.Logger)
204+
assert.Equal(t, handler, client.Logger.(*slog.Logger).Handler(), "retryable client logger should be the custom logger from WithLogger")
233205
})
234206
}
235207

0 commit comments

Comments
 (0)