Skip to content

Commit 0f32d06

Browse files
authored
Merge pull request #272 from NLipatov/refactor/replace-errors-as-with-astype
refactor(errors): replace errors.As with errors.AsType where applicable
2 parents 4d62adf + 434501b commit 0f32d06

File tree

5 files changed

+23
-24
lines changed

5 files changed

+23
-24
lines changed

src/domain/network/err_timeout_test.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ type netError interface {
1414
Temporary() bool
1515
}
1616

17-
var _ netError = ErrTimeout{cause: context.DeadlineExceeded}
18-
1917
func TestErrTimeout_ErrorReturnsCauseMessage(t *testing.T) {
20-
e := ErrTimeout{cause: context.DeadlineExceeded}
18+
e := NewErrTimeout(context.DeadlineExceeded)
2119
if e.Error() == "" {
2220
t.Fatalf("Error() must return non-empty message")
2321
}
@@ -28,7 +26,7 @@ func TestErrTimeout_ErrorReturnsCauseMessage(t *testing.T) {
2826
}
2927

3028
func TestErrTimeout_UnwrapAndErrorsIs_As(t *testing.T) {
31-
e := ErrTimeout{cause: context.DeadlineExceeded}
29+
e := NewErrTimeout(context.DeadlineExceeded)
3230

3331
// Unwrap via errors.Is
3432
if !errors.Is(e, context.DeadlineExceeded) {
@@ -40,10 +38,10 @@ func TestErrTimeout_UnwrapAndErrorsIs_As(t *testing.T) {
4038
t.Fatalf("errors.Is must see cause through additional wrap")
4139
}
4240

43-
// errors.As to our type
44-
var et ErrTimeout
45-
if !errors.As(e, &et) {
46-
t.Fatalf("errors.As must match ErrTimeout")
41+
// errors.AsType to our type
42+
et, ok := errors.AsType[*ErrTimeout](e)
43+
if !ok {
44+
t.Fatalf("errors.AsType must match *ErrTimeout")
4745
}
4846
if !errors.Is(et.cause, context.DeadlineExceeded) {
4947
t.Fatalf("As must preserve cause")
@@ -70,7 +68,7 @@ func TestNewErrTimeout(t *testing.T) {
7068
}
7169

7270
func TestErrTimeout_TimeoutAndTemporaryFlags(t *testing.T) {
73-
e := ErrTimeout{cause: context.DeadlineExceeded}
71+
e := NewErrTimeout(context.DeadlineExceeded)
7472

7573
// Satisfies net.Error semantics
7674
var ne netError = e

src/infrastructure/network/ws/adapter/adapter.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,7 @@ func (a *Adapter) mapReadErr(err error) error {
212212
return nil
213213
}
214214
// Map graceful WS close to io.EOF (as net.Conn Read would do).
215-
var ce *websocket.CloseError
216-
if errors.As(err, &ce) {
215+
if ce, ok := errors.AsType[*websocket.CloseError](err); ok {
217216
switch ce.Code {
218217
case websocket.StatusNormalClosure, websocket.StatusGoingAway:
219218
return io.EOF
@@ -235,8 +234,7 @@ func (a *Adapter) mapWriteErr(err error) error {
235234
if err == nil {
236235
return nil
237236
}
238-
var ce *websocket.CloseError
239-
if errors.As(err, &ce) {
237+
if _, ok := errors.AsType[*websocket.CloseError](err); ok {
240238
// For writes after close, most net.Conn impls return net.ErrClosed.
241239
return net.ErrClosed
242240
}

src/infrastructure/network/ws/adapter/adapter_test.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,15 @@ func TestAdapter_Read_FromExistingReader_ErrorMapped(t *testing.T) {
340340
if n != 0 {
341341
t.Fatalf("expected n=0 on second read, got %d", n)
342342
}
343-
var ne interface{ Timeout() bool }
344-
if !errors.As(err, &ne) || !ne.Timeout() {
343+
type errTimeout interface {
344+
Timeout() bool
345+
Error() string
346+
}
347+
errTO, ok := errors.AsType[errTimeout](err)
348+
if !ok {
349+
t.Fatalf("expected a timeout error; got %v", err)
350+
}
351+
if !errTO.Timeout() {
345352
t.Fatalf("expected timeout net.Error, got %v", err)
346353
}
347354
}

src/infrastructure/tunnel/dataplane/client/udp_chacha20/tun_handler.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ func (w *TunHandler) HandleTun() error {
9292
if w.ctx.Err() != nil {
9393
return nil
9494
}
95-
var netErr net.Error
96-
if errors.As(err, &netErr) {
95+
if _, ok := errors.AsType[net.Error](err); ok {
9796
// Transient socket error (e.g. WSAENOBUFS) — packet lost, socket is fine.
9897
log.Printf("transient write error (packet dropped): %v", err)
9998
continue

src/presentation/mode_selection/args_app_mode_test.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,25 +83,22 @@ func TestArgsAppMode_Mode(t *testing.T) {
8383
if tt.expectedErrMsg != "" && err.Error() != tt.expectedErrMsg {
8484
t.Errorf("Mode() error message = %q, want %q", err.Error(), tt.expectedErrMsg)
8585
}
86-
// Check error type using errors.As
86+
// Check error type using errors.AsType
8787
if tt.expectedErrType != nil {
8888
var noModeProvided mode.NoModeProvided
8989
var invalidModeProvided mode.InvalidModeProvided
9090
var invalidExecPathProvided mode.InvalidExecPathProvided
9191
switch {
9292
case errors.As(tt.expectedErrType, &noModeProvided):
93-
var target mode.NoModeProvided
94-
if !errors.As(err, &target) {
93+
if _, ok := errors.AsType[mode.NoModeProvided](err); !ok {
9594
t.Errorf("expected error type %T, got %T", tt.expectedErrType, err)
9695
}
9796
case errors.As(tt.expectedErrType, &invalidModeProvided):
98-
var target mode.InvalidModeProvided
99-
if !errors.As(err, &target) {
97+
if _, ok := errors.AsType[mode.InvalidModeProvided](err); !ok {
10098
t.Errorf("expected error type %T, got %T", tt.expectedErrType, err)
10199
}
102100
case errors.As(tt.expectedErrType, &invalidExecPathProvided):
103-
var target mode.InvalidExecPathProvided
104-
if !errors.As(err, &target) {
101+
if _, ok := errors.AsType[mode.InvalidExecPathProvided](err); !ok {
105102
t.Errorf("expected error type %T, got %T", tt.expectedErrType, err)
106103
}
107104
}

0 commit comments

Comments
 (0)