Skip to content

Commit 8da0308

Browse files
committed
ci: fix linter errors
Fixes few classes of errors: * use errors.Is even for io.EOF * use errors.As instead of casting to a particular type * use context in http requests * fix bug with appending Change-Id: I1a398cf933c6eed744170e5dd5f2fdff8878ab4c
1 parent 2ea2972 commit 8da0308

File tree

13 files changed

+41
-30
lines changed

13 files changed

+41
-30
lines changed

encryption/transform.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package encryption
66
import (
77
"bytes"
88
"context"
9+
"errors"
910
"io"
1011
"io/ioutil"
1112

@@ -88,14 +89,14 @@ func (t *transformedReader) Read(p []byte) (n int, err error) {
8889
// the next block
8990
b, err := io.ReadFull(t.r, t.inbuf)
9091
t.bytesRead += b
91-
if err == io.EOF && int64(t.bytesRead) < t.expectedSize {
92+
if errors.Is(err, io.EOF) && int64(t.bytesRead) < t.expectedSize {
9293
return 0, io.ErrUnexpectedEOF
9394
} else if err != nil {
9495
return 0, err
9596
}
9697
t.outbuf, err = t.t.Transform(t.outbuf, t.inbuf, t.blockNum)
9798
if err != nil {
98-
if err == io.EOF {
99+
if errors.Is(err, io.EOF) {
99100
return 0, err
100101
}
101102
return 0, Error.Wrap(err)
@@ -178,7 +179,7 @@ func (t *transformedRanger) Range(ctx context.Context, offset, length int64) (_
178179
_, err = io.CopyN(ioutil.Discard, tr,
179180
offset-firstBlock*int64(t.t.OutBlockSize()))
180181
if err != nil {
181-
if err == io.EOF {
182+
if errors.Is(err, io.EOF) {
182183
return nil, io.ErrUnexpectedEOF
183184
}
184185
return nil, Error.Wrap(err)

errs2/ignore.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
// IsCanceled returns true, when the error is a cancellation.
1515
func IsCanceled(err error) bool {
1616
return errs.IsFunc(err, func(err error) bool {
17-
return err == context.Canceled || //nolint: goerr113
17+
return err == context.Canceled || //nolint: errorlint, goerr113
1818
rpcstatus.Code(err) == rpcstatus.Canceled
1919
})
2020
}

fpath/os.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package fpath
55

66
import (
7+
"errors"
78
"fmt"
89
"io"
910
"os"
@@ -84,7 +85,7 @@ func IsValidSetupDir(name string) (ok bool, err error) {
8485
for {
8586
var filenames []string
8687
filenames, err = f.Readdirnames(100)
87-
if err == io.EOF {
88+
if errors.Is(err, io.EOF) {
8889
// nothing more
8990
return true, nil
9091
} else if err != nil {

identity/identity.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -442,8 +442,8 @@ func (fi *FullIdentity) RawChain() [][]byte {
442442
// RawRestChain returns the rest (excluding leaf and CA) of the certificate chain as a 2d byte slice.
443443
func (fi *FullIdentity) RawRestChain() [][]byte {
444444
rawChain := make([][]byte, len(fi.RestChain))
445-
for _, cert := range fi.RestChain {
446-
rawChain = append(rawChain, cert.Raw)
445+
for i, cert := range fi.RestChain {
446+
rawChain[i] = cert.Raw
447447
}
448448
return rawChain
449449
}

peertls/peertls_test.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"crypto/x509/pkix"
1010
"encoding/asn1"
1111
"encoding/gob"
12+
"errors"
1213
"testing"
1314
"time"
1415

@@ -120,8 +121,8 @@ func TestVerifyPeerCertChains(t *testing.T) {
120121
assert.NoError(t, err)
121122

122123
err = peertls.VerifyPeerFunc(peertls.VerifyPeerCertChains)([][]byte{leafCert.Raw, caCert.Raw}, nil)
123-
nonTempErr, ok := err.(peertls.NonTemporaryError)
124-
require.True(t, ok)
124+
var nonTempErr peertls.NonTemporaryError
125+
require.True(t, errors.As(err, &nonTempErr))
125126
assert.True(t, peertls.ErrVerifyPeerCert.Has(nonTempErr.Err()))
126127
assert.True(t, peertls.ErrVerifyCertificateChain.Has(nonTempErr.Err()))
127128
}
@@ -151,8 +152,8 @@ func TestVerifyCAWhitelist(t *testing.T) {
151152

152153
t.Run("no valid signed extension, non-empty whitelist", func(t *testing.T) {
153154
err = peertls.VerifyPeerFunc(peertls.VerifyCAWhitelist([]*x509.Certificate{unrelatedCert}))([][]byte{leafCert.Raw, caCert.Raw}, nil)
154-
nonTempErr, ok := err.(peertls.NonTemporaryError)
155-
require.True(t, ok)
155+
var nonTempErr peertls.NonTemporaryError
156+
require.True(t, errors.As(err, &nonTempErr))
156157
assert.True(t, peertls.ErrVerifyCAWhitelist.Has(nonTempErr.Err()))
157158
})
158159

ranger/file.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package ranger
55

66
import (
77
"context"
8+
"errors"
89
"io"
910
"os"
1011

@@ -69,7 +70,7 @@ func (reader *FileReader) Read(data []byte) (n int, err error) {
6970
}
7071
n, err = reader.file.Read(data)
7172
reader.remaining -= int64(n)
72-
if err == io.EOF && reader.remaining == 0 {
73+
if errors.Is(err, io.EOF) && reader.remaining == 0 {
7374
err = nil
7475
}
7576
return

ranger/httpranger/http.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ type httpRanger struct {
2525
func HTTPRanger(ctx context.Context, url string) (_ ranger.Ranger, err error) {
2626
defer mon.Task()(&ctx)(&err)
2727
/* #nosec G107 */ // The callers must control the soure of the url value
28-
resp, err := http.Head(url)
28+
req, err := http.NewRequestWithContext(ctx, http.MethodHead, url, nil)
29+
if err != nil {
30+
return nil, err
31+
}
32+
resp, err := http.DefaultClient.Do(req)
2933
if err != nil {
3034
return nil, err
3135
}
@@ -54,7 +58,7 @@ func HTTPRanger(ctx context.Context, url string) (_ ranger.Ranger, err error) {
5458
// HTTPRangerSize creates an HTTPRanger with known size.
5559
// Use it if you know the content size. This will safe the extra HEAD request
5660
// for retrieving the content size.
57-
func HTTPRangerSize(url string, size int64) ranger.Ranger { // nolint:golint
61+
func HTTPRangerSize(url string, size int64) ranger.Ranger { // nolint:golint,revive
5862
return &httpRanger{
5963
URL: url,
6064
size: size,
@@ -82,7 +86,7 @@ func (r *httpRanger) Range(ctx context.Context, offset, length int64) (_ io.Read
8286
return ioutil.NopCloser(bytes.NewReader([]byte{})), nil
8387
}
8488
client := &http.Client{}
85-
req, err := http.NewRequest("GET", r.URL, nil)
89+
req, err := http.NewRequestWithContext(ctx, http.MethodGet, r.URL, nil)
8690
if err != nil {
8791
return nil, err
8892
}

readcloser/multi.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package readcloser
55

66
import (
7+
"errors"
78
"io"
89

910
"github.com/zeebo/errs"
@@ -44,15 +45,15 @@ func (mr *multiReadCloser) Read(p []byte) (n int, err error) {
4445
}
4546
}
4647
n, err = mr.readers[0].Read(p)
47-
if err == io.EOF {
48+
if errors.Is(err, io.EOF) {
4849
err = mr.readers[0].Close()
4950
// Use eofReader instead of nil to avoid nil panic
5051
// after performing flatten (Issue 18232).
5152
mr.readers[0] = eofReadCloser{} // permit earlier GC
5253
mr.readers = mr.readers[1:]
5354
}
54-
if n > 0 || err != io.EOF {
55-
if err == io.EOF && len(mr.readers) > 0 {
55+
if n > 0 || !errors.Is(err, io.EOF) {
56+
if errors.Is(err, io.EOF) && len(mr.readers) > 0 {
5657
// Don't return EOF yet. More readers remain.
5758
err = nil
5859
}

rpc/rpccache/cache_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ func runBenchmarkFilterSlice(b *testing.B, n int) {
416416
for i := 0; i < b.N; i++ {
417417
ent := ents[0]
418418
ents = filterEntry(ents, ent)
419-
ents = append(ents, ent)
419+
ents = append(ents, ent) //nolint: makezero // the test removes from slice and adds it back
420420
}
421421
}
422422

rpc/rpcstatus/status.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package rpcstatus
66

77
import (
88
"context"
9+
"errors"
910
"fmt"
1011

1112
"github.com/zeebo/errs"
@@ -42,12 +43,12 @@ const (
4243
func Code(err error) StatusCode {
4344
// special case: if the error is context canceled or deadline exceeded, the code
4445
// must be those. additionally, grpc returns OK for a nil error, so we will, too.
45-
switch err {
46-
case nil:
46+
switch {
47+
case err == nil:
4748
return OK
48-
case context.Canceled:
49+
case errors.Is(err, context.Canceled):
4950
return Canceled
50-
case context.DeadlineExceeded:
51+
case errors.Is(err, context.DeadlineExceeded):
5152
return DeadlineExceeded
5253
default:
5354
if code := StatusCode(drpcerr.Code(err)); code != Unknown {
@@ -68,10 +69,9 @@ func Wrap(code StatusCode, err error) error {
6869
code: code,
6970
}
7071

71-
if ee, ok := err.(errsError); ok {
72-
ce.errsError = ee
73-
} else {
74-
ce.errsError = errs.Wrap(err).(errsError)
72+
if !errors.As(err, &ce.errsError) {
73+
werr := errs.Wrap(err)
74+
errors.As(werr, &ce.errsError)
7575
}
7676

7777
return ce

strictcsv/unmarshal.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"bytes"
88
"encoding"
99
"encoding/csv"
10+
"errors"
1011
"io"
1112
"reflect"
1213
"sort"
@@ -116,7 +117,7 @@ func Read(r io.Reader, obj interface{}) error {
116117
for {
117118
record, err := csvr.Read()
118119
if err != nil {
119-
if err == io.EOF {
120+
if errors.Is(err, io.EOF) {
120121
pv.Elem().Set(v)
121122
return nil
122123
}

sync2/pipe.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ func NewMultiPipeFile(tempdir string, pipeCount, pipeSize int64) (*MultiPipe, er
231231
if err != nil {
232232
closeErr := tempfile.Close()
233233
if closeErr != nil {
234-
return nil, fmt.Errorf("%v/%v", err, closeErr)
234+
return nil, fmt.Errorf("%w/%v", err, closeErr)
235235
}
236236
return nil, err
237237
}

sync2/tee.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package sync2
55

66
import (
7+
"errors"
78
"io"
89
"sync"
910
"sync/atomic"
@@ -84,7 +85,7 @@ func (reader *teeReader) Read(data []byte) (n int, err error) {
8485
tee.mu.Lock()
8586

8687
// fail fast on writer error
87-
if tee.writerErr != nil && tee.writerErr != io.EOF {
88+
if tee.writerErr != nil && !errors.Is(tee.writerErr, io.EOF) {
8889
tee.mu.Unlock()
8990
return 0, tee.writerErr
9091
}

0 commit comments

Comments
 (0)