Skip to content

Commit c61efde

Browse files
authored
GODRIVER-2603 (Contd.) Revised error handling using Go 1.13 error APIs (#1476)
1 parent 8705829 commit c61efde

33 files changed

+98
-80
lines changed

bson/bsoncodec/default_value_decoders.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1787,7 +1787,7 @@ func (DefaultValueDecoders) decodeElemsFromDocumentReader(dc DecodeContext, dr b
17871787
elems := make([]reflect.Value, 0)
17881788
for {
17891789
key, vr, err := dr.ReadElement()
1790-
if err == bsonrw.ErrEOD {
1790+
if errors.Is(err, bsonrw.ErrEOD) {
17911791
break
17921792
}
17931793
if err != nil {

bson/bsoncodec/default_value_encoders.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ func (dve DefaultValueEncoders) mapEncodeValue(ec EncodeContext, dw bsonrw.Docum
352352
return err
353353
}
354354

355-
if lookupErr == errInvalidValue {
355+
if errors.Is(lookupErr, errInvalidValue) {
356356
err = vw.WriteNull()
357357
if err != nil {
358358
return err
@@ -427,7 +427,7 @@ func (dve DefaultValueEncoders) ArrayEncodeValue(ec EncodeContext, vw bsonrw.Val
427427
return err
428428
}
429429

430-
if lookupErr == errInvalidValue {
430+
if errors.Is(lookupErr, errInvalidValue) {
431431
err = vw.WriteNull()
432432
if err != nil {
433433
return err
@@ -496,7 +496,7 @@ func (dve DefaultValueEncoders) SliceEncodeValue(ec EncodeContext, vw bsonrw.Val
496496
return err
497497
}
498498

499-
if lookupErr == errInvalidValue {
499+
if errors.Is(lookupErr, errInvalidValue) {
500500
err = vw.WriteNull()
501501
if err != nil {
502502
return err

bson/bsoncodec/map_codec.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package bsoncodec
88

99
import (
1010
"encoding"
11+
"errors"
1112
"fmt"
1213
"reflect"
1314
"strconv"
@@ -137,7 +138,7 @@ func (mc *MapCodec) mapEncodeValue(ec EncodeContext, dw bsonrw.DocumentWriter, v
137138
return err
138139
}
139140

140-
if lookupErr == errInvalidValue {
141+
if errors.Is(lookupErr, errInvalidValue) {
141142
err = vw.WriteNull()
142143
if err != nil {
143144
return err
@@ -200,7 +201,7 @@ func (mc *MapCodec) DecodeValue(dc DecodeContext, vr bsonrw.ValueReader, val ref
200201

201202
for {
202203
key, vr, err := dr.ReadElement()
203-
if err == bsonrw.ErrEOD {
204+
if errors.Is(err, bsonrw.ErrEOD) {
204205
break
205206
}
206207
if err != nil {

bson/bsoncodec/registry_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package bsoncodec
88

99
import (
10+
"errors"
1011
"reflect"
1112
"testing"
1213

@@ -351,7 +352,8 @@ func TestRegistryBuilder(t *testing.T) {
351352
})
352353
t.Run("Decoder", func(t *testing.T) {
353354
wanterr := tc.wanterr
354-
if ene, ok := tc.wanterr.(ErrNoEncoder); ok {
355+
var ene ErrNoEncoder
356+
if errors.As(tc.wanterr, &ene) {
355357
wanterr = ErrNoDecoder(ene)
356358
}
357359

@@ -775,7 +777,8 @@ func TestRegistry(t *testing.T) {
775777
t.Parallel()
776778

777779
wanterr := tc.wanterr
778-
if ene, ok := tc.wanterr.(ErrNoEncoder); ok {
780+
var ene ErrNoEncoder
781+
if errors.As(tc.wanterr, &ene) {
779782
wanterr = ErrNoDecoder(ene)
780783
}
781784

bson/bsonrw/copier.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package bsonrw
88

99
import (
10+
"errors"
1011
"fmt"
1112
"io"
1213

@@ -442,7 +443,7 @@ func (c Copier) copyArray(dst ValueWriter, src ValueReader) error {
442443

443444
for {
444445
vr, err := ar.ReadValue()
445-
if err == ErrEOA {
446+
if errors.Is(err, ErrEOA) {
446447
break
447448
}
448449
if err != nil {
@@ -466,7 +467,7 @@ func (c Copier) copyArray(dst ValueWriter, src ValueReader) error {
466467
func (c Copier) copyDocumentCore(dw DocumentWriter, dr DocumentReader) error {
467468
for {
468469
key, vr, err := dr.ReadElement()
469-
if err == ErrEOD {
470+
if errors.Is(err, ErrEOD) {
470471
break
471472
}
472473
if err != nil {

bson/bsonrw/extjson_parser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ func (ejp *extJSONParser) readValue(t bsontype.Type) (*extJSONValue, error) {
313313
// convert hex to bytes
314314
bytes, err := hex.DecodeString(uuidNoHyphens)
315315
if err != nil {
316-
return nil, fmt.Errorf("$uuid value does not follow RFC 4122 format regarding hex bytes: %v", err)
316+
return nil, fmt.Errorf("$uuid value does not follow RFC 4122 format regarding hex bytes: %w", err)
317317
}
318318

319319
ejp.advanceState()

bson/bsonrw/extjson_parser_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package bsonrw
88

99
import (
10+
"errors"
1011
"io"
1112
"strings"
1213
"testing"
@@ -47,7 +48,7 @@ type readKeyValueTestCase struct {
4748

4849
func expectSpecificError(expected error) expectedErrorFunc {
4950
return func(t *testing.T, err error, desc string) {
50-
if err != expected {
51+
if !errors.Is(err, expected) {
5152
t.Helper()
5253
t.Errorf("%s: Expected %v but got: %v", desc, expected, err)
5354
t.FailNow()

bson/bsonrw/extjson_reader.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package bsonrw
88

99
import (
10+
"errors"
1011
"fmt"
1112
"io"
1213
"sync"
@@ -613,7 +614,7 @@ func (ejvr *extJSONValueReader) ReadElement() (string, ValueReader, error) {
613614
name, t, err := ejvr.p.readKey()
614615

615616
if err != nil {
616-
if err == ErrEOD {
617+
if errors.Is(err, ErrEOD) {
617618
if ejvr.stack[ejvr.frame].mode == mCodeWithScope {
618619
_, err := ejvr.p.peekType()
619620
if err != nil {
@@ -640,7 +641,7 @@ func (ejvr *extJSONValueReader) ReadValue() (ValueReader, error) {
640641

641642
t, err := ejvr.p.peekType()
642643
if err != nil {
643-
if err == ErrEOA {
644+
if errors.Is(err, ErrEOA) {
644645
ejvr.pop()
645646
}
646647

bson/bsonrw/json_scanner.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (js *jsonScanner) nextToken() (*jsonToken, error) {
5858
c, err = js.readNextByte()
5959
}
6060

61-
if err == io.EOF {
61+
if errors.Is(err, io.EOF) {
6262
return &jsonToken{t: jttEOF}, nil
6363
} else if err != nil {
6464
return nil, err
@@ -198,7 +198,7 @@ func (js *jsonScanner) scanString() (*jsonToken, error) {
198198
for {
199199
c, err = js.readNextByte()
200200
if err != nil {
201-
if err == io.EOF {
201+
if errors.Is(err, io.EOF) {
202202
return nil, errors.New("end of input in JSON string")
203203
}
204204
return nil, err
@@ -209,7 +209,7 @@ func (js *jsonScanner) scanString() (*jsonToken, error) {
209209
case '\\':
210210
c, err = js.readNextByte()
211211
if err != nil {
212-
if err == io.EOF {
212+
if errors.Is(err, io.EOF) {
213213
return nil, errors.New("end of input in JSON string")
214214
}
215215
return nil, err
@@ -248,7 +248,7 @@ func (js *jsonScanner) scanString() (*jsonToken, error) {
248248
if utf16.IsSurrogate(rn) {
249249
c, err = js.readNextByte()
250250
if err != nil {
251-
if err == io.EOF {
251+
if errors.Is(err, io.EOF) {
252252
return nil, errors.New("end of input in JSON string")
253253
}
254254
return nil, err
@@ -264,7 +264,7 @@ func (js *jsonScanner) scanString() (*jsonToken, error) {
264264

265265
c, err = js.readNextByte()
266266
if err != nil {
267-
if err == io.EOF {
267+
if errors.Is(err, io.EOF) {
268268
return nil, errors.New("end of input in JSON string")
269269
}
270270
return nil, err
@@ -384,7 +384,7 @@ func (js *jsonScanner) scanNumber(first byte) (*jsonToken, error) {
384384
for {
385385
c, err = js.readNextByte()
386386

387-
if err != nil && err != io.EOF {
387+
if err != nil && !errors.Is(err, io.EOF) {
388388
return nil, err
389389
}
390390

bson/bsonrw/value_reader_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package bsonrw
88

99
import (
1010
"bytes"
11+
"errors"
1112
"fmt"
1213
"io"
1314
"math"
@@ -185,7 +186,7 @@ func TestValueReader(t *testing.T) {
185186
// invalid length
186187
vr.d = []byte{0x00, 0x00}
187188
_, err := vr.ReadDocument()
188-
if err != io.EOF {
189+
if !errors.Is(err, io.EOF) {
189190
t.Errorf("Expected io.EOF with document length too small. got %v; want %v", err, io.EOF)
190191
}
191192

@@ -239,7 +240,7 @@ func TestValueReader(t *testing.T) {
239240

240241
vr.frame--
241242
_, err = vr.ReadDocument()
242-
if err != io.EOF {
243+
if !errors.Is(err, io.EOF) {
243244
t.Errorf("Should return error when attempting to read length with not enough bytes. got %v; want %v", err, io.EOF)
244245
}
245246
})
@@ -1482,7 +1483,7 @@ func TestValueReader(t *testing.T) {
14821483
frame: 0,
14831484
}
14841485
gotType, got, gotErr := vr.ReadValueBytes(nil)
1485-
if gotErr != tc.wantErr {
1486+
if !errors.Is(gotErr, tc.wantErr) {
14861487
t.Errorf("Did not receive expected error. got %v; want %v", gotErr, tc.wantErr)
14871488
}
14881489
if tc.wantErr == nil && gotType != tc.wantType {

0 commit comments

Comments
 (0)