mirror of
https://github.com/moby/buildkit.git
synced 2026-11-06 05:16:45 +00:00
lint: correcting errorlint and some err113 cases
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
31 files changed
+57
-54
No files matched your search
@@ -8,6 +8,7 @@ linters:
|
||||
- depguard
|
||||
- durationcheck
|
||||
- errname
|
||||
- errorlint
|
||||
- forbidigo
|
||||
- gocritic
|
||||
- gosec
|
||||
|
||||
Vendored
+1
-1
@@ -2788,7 +2788,7 @@ func mapToSystemTarBlob(t *testing.T, m map[string]string) ([]byte, ocispecs.Des
|
||||
tr := tar.NewReader(bytes.NewReader(tarout))
|
||||
for {
|
||||
h, err := tr.Next()
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
|
||||
Vendored
+1
-1
@@ -137,7 +137,7 @@ func readBlob(ctx context.Context, provider content.Provider, desc ocispecs.Desc
|
||||
if err != nil {
|
||||
// NOTE: even if err == EOF, we might have got expected dt here.
|
||||
// For instance, http.Response.Body is known to return non-zero bytes with EOF.
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
if dtDigest := desc.Digest.Algorithm().FromBytes(dt); dtDigest != desc.Digest {
|
||||
err = errors.Wrapf(err, "got EOF, expected %s (%d bytes), got %s (%d bytes)",
|
||||
desc.Digest, desc.Size, dtDigest, len(dt))
|
||||
|
||||
Vendored
+2
-1
@@ -62,7 +62,8 @@ func ReadFile(ctx context.Context, mount snapshot.Mountable, req ReadRequest) ([
|
||||
// The filename here is internal to the mount, so we can restore
|
||||
// the request base path for error reporting.
|
||||
// See os.DirFS.Open for details.
|
||||
if pe, ok := err.(*os.PathError); ok {
|
||||
pe := &os.PathError{}
|
||||
if errors.As(err, &pe) {
|
||||
pe.Path = req.Filename
|
||||
}
|
||||
return errors.WithStack(err)
|
||||
|
||||
@@ -557,7 +557,7 @@ func testExportedImageLabels(t *testing.T, sb integration.Sandbox) {
|
||||
|
||||
for {
|
||||
resp, err := cl.Recv()
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
}
|
||||
require.NoError(t, err)
|
||||
@@ -8302,7 +8302,7 @@ func checkAllReleasable(t *testing.T, c *Client, sb integration.Sandbox, checkCo
|
||||
|
||||
for {
|
||||
resp, err := cl.Recv()
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
}
|
||||
require.NoError(t, err)
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ func (c *Client) Prune(ctx context.Context, ch chan UsageInfo, opts ...PruneOpti
|
||||
for {
|
||||
d, err := cl.Recv()
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
|
||||
+1
-1
@@ -322,7 +322,7 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
|
||||
for {
|
||||
resp, err := stream.Recv()
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
return nil
|
||||
}
|
||||
return errors.Wrap(err, "failed to receive status")
|
||||
|
||||
@@ -57,7 +57,7 @@ func logs(clicontext *cli.Context) error {
|
||||
}
|
||||
he, err := cl.Recv()
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
return errors.Errorf("ref %s not found", ref)
|
||||
}
|
||||
return err
|
||||
|
||||
+3
-12
@@ -651,17 +651,12 @@ func groupToGID(group string) (int, error) {
|
||||
return os.Getgid(), nil
|
||||
}
|
||||
|
||||
var (
|
||||
err error
|
||||
id int
|
||||
)
|
||||
|
||||
// Try and parse as a number, if the error is ErrSyntax
|
||||
// (i.e. its not a number) then we carry on and try it as a
|
||||
// name.
|
||||
if id, err = strconv.Atoi(group); err == nil {
|
||||
if id, err := strconv.Atoi(group); err == nil {
|
||||
return id, nil
|
||||
} else if err.(*strconv.NumError).Err != strconv.ErrSyntax {
|
||||
} else if !errors.Is(err, strconv.ErrSyntax) {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
@@ -671,11 +666,7 @@ func groupToGID(group string) (int, error) {
|
||||
}
|
||||
group = ginfo.Gid
|
||||
|
||||
if id, err = strconv.Atoi(group); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return id, nil
|
||||
return strconv.Atoi(group)
|
||||
}
|
||||
|
||||
func getListener(addr string, uid, gid int, secDescriptor string, tlsConfig *tls.Config, warnTLS bool) (net.Listener, error) {
|
||||
|
||||
@@ -129,7 +129,7 @@ func (w *runcExecutor) callWithIO(ctx context.Context, process executor.ProcessI
|
||||
if errors.As(err, &ptmClosedError) {
|
||||
if ptmClosedError.Op == "read" &&
|
||||
ptmClosedError.Path == "/dev/ptmx" &&
|
||||
ptmClosedError.Err == syscall.EIO {
|
||||
errors.Is(ptmClosedError.Err, syscall.EIO) {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9419,7 +9419,7 @@ COPY notexist /foo
|
||||
got := false
|
||||
for {
|
||||
resp, err := cl.Recv()
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
require.Equal(t, true, got, "expected error was %+v", expectedError)
|
||||
break
|
||||
}
|
||||
@@ -9543,7 +9543,7 @@ COPY Dockerfile /foo
|
||||
got := false
|
||||
for {
|
||||
resp, err := cl.Recv()
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
require.Equal(t, true, got)
|
||||
break
|
||||
}
|
||||
@@ -9916,7 +9916,7 @@ func checkAllReleasable(t *testing.T, c *client.Client, sb integration.Sandbox,
|
||||
|
||||
for {
|
||||
resp, err := cl.Recv()
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
}
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -2,6 +2,8 @@ package parser
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
var invalidJSONArraysOfStrings = []string{
|
||||
@@ -48,7 +50,7 @@ func TestJSONArraysOfStrings(t *testing.T) {
|
||||
}
|
||||
}
|
||||
for _, json := range invalidJSONArraysOfStrings {
|
||||
if _, _, err := parseJSON(json); err != errDockerfileNotStringArray {
|
||||
if _, _, err := parseJSON(json); !errors.Is(err, errDockerfileNotStringArray) {
|
||||
t.Fatalf("%q should be an invalid JSON array of strings, but wasn't!", json)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -318,7 +318,7 @@ func parseMaybeJSON(rest string, d *directives) (*Node, map[string]bool, error)
|
||||
if err == nil {
|
||||
return node, attrs, nil
|
||||
}
|
||||
if err == errDockerfileNotStringArray {
|
||||
if errors.Is(err, errDockerfileNotStringArray) {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
@@ -336,7 +336,7 @@ func parseMaybeJSONToList(rest string, d *directives) (*Node, map[string]bool, e
|
||||
if err == nil {
|
||||
return node, attrs, nil
|
||||
}
|
||||
if err == errDockerfileNotStringArray {
|
||||
if errors.Is(err, errDockerfileNotStringArray) {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
|
||||
@@ -556,8 +556,8 @@ func scanLines(data []byte, atEOF bool) (advance int, token []byte, err error) {
|
||||
}
|
||||
|
||||
func handleScannerError(err error) error {
|
||||
switch err {
|
||||
case bufio.ErrTooLong:
|
||||
switch {
|
||||
case errors.Is(err, bufio.ErrTooLong):
|
||||
return errors.Errorf("dockerfile line greater than max allowed size of %d", bufio.MaxScanTokenSize-1)
|
||||
default:
|
||||
return err
|
||||
|
||||
@@ -77,7 +77,7 @@ func (wc *streamWriterCloser) Close() error {
|
||||
}
|
||||
// block until receiver is done
|
||||
var bm BytesMessage
|
||||
if err := wc.RecvMsg(&bm); err != io.EOF {
|
||||
if err := wc.RecvMsg(&bm); !errors.Is(err, io.EOF) {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
return nil
|
||||
|
||||
@@ -2,6 +2,7 @@ package grpchijack
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
"net"
|
||||
"strings"
|
||||
@@ -112,7 +113,7 @@ func (c *conn) Close() (err error) {
|
||||
m.Data = c.buf
|
||||
err = c.stream.RecvMsg(m)
|
||||
if err != nil {
|
||||
if err != io.EOF {
|
||||
if !errors.Is(err, io.EOF) {
|
||||
c.readMu.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ func Copy(ctx context.Context, conn io.ReadWriteCloser, stream Stream, closeStre
|
||||
p := &BytesMessage{}
|
||||
for {
|
||||
if err := stream.RecvMsg(p); err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
// indicates client performed CloseSend, but they may still be
|
||||
// reading data
|
||||
if closeWriter, ok := conn.(interface {
|
||||
@@ -55,7 +55,7 @@ func Copy(ctx context.Context, conn io.ReadWriteCloser, stream Stream, closeStre
|
||||
buf := make([]byte, 32*1024)
|
||||
n, err := conn.Read(buf)
|
||||
switch {
|
||||
case err == io.EOF:
|
||||
case errors.Is(err, io.EOF):
|
||||
if closeStream != nil {
|
||||
closeStream()
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ func (u *Upload) WriteTo(w io.Writer) (int64, error) {
|
||||
for {
|
||||
var bm BytesMessage
|
||||
if err := u.cc.RecvMsg(&bm); err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
return n, nil
|
||||
}
|
||||
return n, errors.WithStack(err)
|
||||
|
||||
+2
-1
@@ -2,6 +2,7 @@ package solver
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
"slices"
|
||||
"time"
|
||||
@@ -26,7 +27,7 @@ func (j *Job) Status(ctx context.Context, ch chan *client.SolveStatus) error {
|
||||
for {
|
||||
p, err := pr.Read(ctx)
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
|
||||
@@ -57,7 +57,8 @@ func check(arch, bin string) (string, error) {
|
||||
if err == nil {
|
||||
return "", errors.Errorf("invalid zero exit code")
|
||||
}
|
||||
if exitError, ok := err.(*exec.ExitError); ok {
|
||||
exitError := &exec.ExitError{}
|
||||
if errors.As(err, &exitError) {
|
||||
switch exitError.ExitCode() {
|
||||
case 65:
|
||||
return "v1", nil
|
||||
|
||||
@@ -191,7 +191,7 @@ func (c estargzType) Is(ctx context.Context, cs content.Store, dgst digest.Diges
|
||||
if h.Name != estargz.TOCTarName {
|
||||
return false
|
||||
}
|
||||
if _, err = tr.Next(); err != io.EOF { // must be EOF
|
||||
if _, err = tr.Next(); !errors.Is(err, io.EOF) { // must be EOF
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ type rc struct {
|
||||
func (r *rc) Read(b []byte) (int, error) {
|
||||
n, err := r.ReadAt(b, r.offset)
|
||||
r.offset += int64(n)
|
||||
if n > 0 && err == io.EOF {
|
||||
if n > 0 && errors.Is(err, io.EOF) {
|
||||
err = nil
|
||||
}
|
||||
return n, err
|
||||
|
||||
@@ -55,7 +55,7 @@ func (r *readerAt) ReadAt(b []byte, off int64) (int, error) {
|
||||
var totalN int
|
||||
for len(b) > 0 {
|
||||
n, err := r.Read(b)
|
||||
if err == io.EOF && n == len(b) {
|
||||
if errors.Is(err, io.EOF) && n == len(b) {
|
||||
err = nil
|
||||
}
|
||||
r.offset += int64(n)
|
||||
|
||||
@@ -2,6 +2,7 @@ package tarconverter
|
||||
|
||||
import (
|
||||
"archive/tar"
|
||||
"errors"
|
||||
"io"
|
||||
)
|
||||
|
||||
@@ -19,7 +20,7 @@ func NewReader(srcContent io.Reader, headerConverter HeaderConverter) io.ReadClo
|
||||
|
||||
for {
|
||||
hdr, err := srcTar.Next()
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
// Signals end of archive.
|
||||
rebasedTar.Close()
|
||||
// drain the reader into io.Discard, until hitting EOF
|
||||
|
||||
@@ -299,7 +299,7 @@ func (ps *progressState) run(pr progress.Reader) {
|
||||
for {
|
||||
p, err := pr.Read(context.TODO())
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
ps.mu.Lock()
|
||||
ps.done = true
|
||||
ps.mu.Unlock()
|
||||
|
||||
@@ -94,7 +94,7 @@ func setNetNS(s *specs.Spec, nsPath string) error {
|
||||
|
||||
func unmountNetNS(nsPath string) error {
|
||||
if err := unix.Unmount(nsPath, unix.MNT_DETACH); err != nil {
|
||||
if err != syscall.EINVAL && err != syscall.ENOENT {
|
||||
if !errors.Is(err, syscall.EINVAL) && !errors.Is(err, syscall.ENOENT) {
|
||||
return errors.Wrap(err, "error unmounting network namespace")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ func checkOpaque(upperdir string, path string, base string, f os.FileInfo) (isOp
|
||||
if f.IsDir() {
|
||||
for _, oKey := range []string{"trusted.overlay.opaque", "user.overlay.opaque"} {
|
||||
opaque, err := sysx.LGetxattr(filepath.Join(upperdir, path), oKey)
|
||||
if err != nil && err != unix.ENODATA {
|
||||
if err != nil && !errors.Is(err, unix.ENODATA) {
|
||||
return false, errors.Wrapf(err, "failed to retrieve %s attr", oKey)
|
||||
} else if len(opaque) == 1 && opaque[0] == 'y' {
|
||||
// This is an opaque whiteout directory.
|
||||
@@ -296,7 +296,7 @@ func checkRedirect(upperdir string, path string, f os.FileInfo) (bool, error) {
|
||||
if f.IsDir() {
|
||||
rKey := "trusted.overlay.redirect"
|
||||
redirect, err := sysx.LGetxattr(filepath.Join(upperdir, path), rKey)
|
||||
if err != nil && err != unix.ENODATA {
|
||||
if err != nil && !errors.Is(err, unix.ENODATA) {
|
||||
return false, errors.Wrapf(err, "failed to retrieve %s attr", rKey)
|
||||
}
|
||||
return len(redirect) > 0, nil
|
||||
@@ -379,11 +379,11 @@ func compareSysStat(s1, s2 any) (bool, error) {
|
||||
// Copyright The containerd Authors.
|
||||
func compareCapabilities(p1, p2 string) (bool, error) {
|
||||
c1, err := sysx.LGetxattr(p1, "security.capability")
|
||||
if err != nil && err != sysx.ENODATA {
|
||||
if err != nil && !errors.Is(err, sysx.ENODATA) {
|
||||
return false, errors.Wrapf(err, "failed to get xattr for %s", p1)
|
||||
}
|
||||
c2, err := sysx.LGetxattr(p2, "security.capability")
|
||||
if err != nil && err != sysx.ENODATA {
|
||||
if err != nil && !errors.Is(err, sysx.ENODATA) {
|
||||
return false, errors.Wrapf(err, "failed to get xattr for %s", p2)
|
||||
}
|
||||
return bytes.Equal(c1, c2), nil
|
||||
@@ -443,7 +443,7 @@ func compareFileContent(p1, p2 string) (bool, error) {
|
||||
defer bufPool.Put(b2)
|
||||
for {
|
||||
n1, err1 := io.ReadFull(f1, *b1)
|
||||
if err1 == io.ErrUnexpectedEOF {
|
||||
if errors.Is(err1, io.ErrUnexpectedEOF) {
|
||||
// it's expected to get EOF when file size isn't a multiple of chunk size, consolidate these error types
|
||||
err1 = io.EOF
|
||||
}
|
||||
@@ -451,7 +451,7 @@ func compareFileContent(p1, p2 string) (bool, error) {
|
||||
return false, err1
|
||||
}
|
||||
n2, err2 := io.ReadFull(f2, *b2)
|
||||
if err2 == io.ErrUnexpectedEOF {
|
||||
if errors.Is(err2, io.ErrUnexpectedEOF) {
|
||||
err2 = io.EOF
|
||||
}
|
||||
if err2 != nil && err2 != io.EOF {
|
||||
|
||||
@@ -2,6 +2,7 @@ package progress
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
"sync"
|
||||
)
|
||||
@@ -110,7 +111,7 @@ func (mr *MultiReader) handle() error {
|
||||
for {
|
||||
p, err := mr.main.Read(context.TODO())
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
mr.mu.Lock()
|
||||
cancelErr := context.Canceled
|
||||
for w, c := range mr.writers {
|
||||
|
||||
@@ -126,7 +126,7 @@ func saveProgress(ctx context.Context, pr Reader, t *trace) error {
|
||||
for {
|
||||
p, err := pr.Read(ctx)
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
|
||||
@@ -52,15 +52,18 @@ func (cli *Client) doRequest(req *http.Request) (*http.Response, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if uErr, ok := err.(*url.Error); ok {
|
||||
if nErr, ok := uErr.Err.(*net.OpError); ok {
|
||||
uErr := &url.Error{}
|
||||
if errors.As(err, &uErr) {
|
||||
nErr := &net.OpError{}
|
||||
if errors.As(uErr.Err, &nErr) {
|
||||
if os.IsPermission(nErr.Err) {
|
||||
return nil, errors.Wrapf(err, "permission denied while trying to connect to the Docker daemon socket at %v", cli.host)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if nErr, ok := err.(net.Error); ok {
|
||||
var nErr net.Error
|
||||
if errors.As(err, &nErr) {
|
||||
// FIXME(thaJeztah): any net.Error should be considered a connection error (but we should include the original error)?
|
||||
if nErr.Timeout() {
|
||||
return nil, ErrorConnectionFailed(cli.host)
|
||||
|
||||
@@ -29,7 +29,7 @@ func ReadTarToMap(dt []byte, compressed bool) (map[string]*TarItem, error) {
|
||||
for {
|
||||
h, err := tr.Next()
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
return m, nil
|
||||
}
|
||||
return nil, errors.Wrap(err, "error reading tar")
|
||||
|
||||
Reference in new issue
Block a user