diff options
Diffstat (limited to 'internal')
-rw-r--r-- | internal/backup/sink_test.go | 5 | ||||
-rw-r--r-- | internal/cli/praefect/subcmd_track_repositories.go | 6 | ||||
-rw-r--r-- | internal/git/gittest/command.go | 8 | ||||
-rw-r--r-- | internal/git/objectpool/disconnect_test.go | 8 | ||||
-rw-r--r-- | internal/gitaly/service/cleanup/apply_bfg_object_map_stream.go | 4 | ||||
-rw-r--r-- | internal/grpc/dnsresolver/resolver.go | 4 | ||||
-rw-r--r-- | internal/streamcache/cache_test.go | 17 | ||||
-rw-r--r-- | internal/structerr/error.go | 3 | ||||
-rw-r--r-- | internal/testhelper/leakage.go | 7 | ||||
-rw-r--r-- | internal/testhelper/testhelper.go | 7 |
10 files changed, 44 insertions, 25 deletions
diff --git a/internal/backup/sink_test.go b/internal/backup/sink_test.go index 9ff6f3f8a..5eb337147 100644 --- a/internal/backup/sink_test.go +++ b/internal/backup/sink_test.go @@ -2,6 +2,7 @@ package backup import ( "bytes" + "errors" "fmt" "io" "os" @@ -24,8 +25,8 @@ func TestResolveSink(t *testing.T) { sssink, ok := sink.(*StorageServiceSink) require.True(t, ok) _, err := sssink.bucket.List(nil).Next(ctx) - ierr, ok := err.(interface{ Unwrap() error }) - require.True(t, ok) + var ierr interface{ Unwrap() error } + require.True(t, errors.As(err, &ierr)) terr := ierr.Unwrap() require.Contains(t, terr.Error(), expErrMsg) } diff --git a/internal/cli/praefect/subcmd_track_repositories.go b/internal/cli/praefect/subcmd_track_repositories.go index 9de4ddfbf..bde162108 100644 --- a/internal/cli/praefect/subcmd_track_repositories.go +++ b/internal/cli/praefect/subcmd_track_repositories.go @@ -4,6 +4,7 @@ import ( "bufio" "context" "encoding/json" + "errors" "fmt" "io" "os" @@ -215,10 +216,11 @@ func printInvalidRequests(w io.Writer, repoErrs []invalidRequest, pathLines map[ for _, l := range repoErrs { fmt.Fprintf(w, " line %v, relative_path: %q, replica_path: %q\n", l.line, l.relativePath, l.replicaPath) for _, err := range l.errs { - if dup, ok := err.(*dupPathError); ok { + var dupPathErr *dupPathError + if errors.As(err, &dupPathErr) { // The complete set of duplicate reqNums won't be known until input is // fully processed, fetch them now. - err = &dupPathError{path: dup.path, reqNums: pathLines[dup.path]} + err = &dupPathError{path: dupPathErr.path, reqNums: pathLines[dupPathErr.path]} } fmt.Fprintf(w, " %v\n", err) } diff --git a/internal/git/gittest/command.go b/internal/git/gittest/command.go index 30d276961..c5eef143c 100644 --- a/internal/git/gittest/command.go +++ b/internal/git/gittest/command.go @@ -2,6 +2,7 @@ package gittest import ( "context" + "errors" "io" "os" "os/exec" @@ -67,11 +68,12 @@ func ExecOpts(tb testing.TB, cfg config.Cfg, execCfg ExecConfig, args ...string) func handleExecErr(tb testing.TB, cfg config.Cfg, execCfg ExecConfig, args []string, err error) { var stderr []byte - if ee, ok := err.(*exec.ExitError); ok { - if execCfg.ExpectedExitCode == ee.ExitCode() { + var exitErr *exec.ExitError + if errors.As(err, &exitErr) { + if execCfg.ExpectedExitCode == exitErr.ExitCode() { return } - stderr = ee.Stderr + stderr = exitErr.Stderr } tb.Log(cfg.Git.BinPath, args) if len(stderr) > 0 { diff --git a/internal/git/objectpool/disconnect_test.go b/internal/git/objectpool/disconnect_test.go index ff1b0f0d0..6774c9dfc 100644 --- a/internal/git/objectpool/disconnect_test.go +++ b/internal/git/objectpool/disconnect_test.go @@ -431,9 +431,11 @@ func TestRemoveAlternatesIfOk(t *testing.T) { altBackup := altPath + ".backup" err = removeAlternatesIfOk(ctx, repo, altPath, altBackup, logger, nil) require.Error(t, err, "removeAlternatesIfOk should fail") - require.IsType(t, &connectivityError{}, err, "error must be because of connectivity check") - connectivityErr := err.(*connectivityError) - require.IsType(t, &exec.ExitError{}, connectivityErr.error, "error must be because of fsck") + + var connectivityErr *connectivityError + require.True(t, errors.As(err, &connectivityErr), "error must be because of connectivity check") + var exitError *exec.ExitError + require.True(t, errors.As(connectivityErr.error, &exitError), "error must be because of fsck") // We expect objects/info/alternates to have been restored when // removeAlternatesIfOk returned. diff --git a/internal/gitaly/service/cleanup/apply_bfg_object_map_stream.go b/internal/gitaly/service/cleanup/apply_bfg_object_map_stream.go index 5ecf4967f..0c13d57eb 100644 --- a/internal/gitaly/service/cleanup/apply_bfg_object_map_stream.go +++ b/internal/gitaly/service/cleanup/apply_bfg_object_map_stream.go @@ -1,6 +1,7 @@ package cleanup import ( + "errors" "io" "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/storage" @@ -52,7 +53,8 @@ func (s *server) ApplyBfgObjectMapStream(server gitalypb.CleanupService_ApplyBfg } if err := cleaner.applyObjectMap(ctx, reader.streamReader()); err != nil { - if invalidErr, ok := err.(errInvalidObjectMap); ok { + var invalidErr errInvalidObjectMap + if errors.As(err, &invalidErr) { return structerr.NewInvalidArgument("%w", invalidErr) } diff --git a/internal/grpc/dnsresolver/resolver.go b/internal/grpc/dnsresolver/resolver.go index 28396582b..df21fb198 100644 --- a/internal/grpc/dnsresolver/resolver.go +++ b/internal/grpc/dnsresolver/resolver.go @@ -2,6 +2,7 @@ package dnsresolver import ( "context" + "errors" "net" "sync" "time" @@ -131,7 +132,8 @@ func (d *dnsResolver) resolve() (*resolver.State, error) { // Backoff). // - Other errors should be suppressed (they may represent the absence of a TXT record). func handleDNSError(err error) error { - if dnsErr, ok := err.(*net.DNSError); ok && !dnsErr.IsTimeout && !dnsErr.IsTemporary { + var dnsErr *net.DNSError + if errors.As(err, &dnsErr) && !dnsErr.IsTimeout && !dnsErr.IsTemporary { return nil } diff --git a/internal/streamcache/cache_test.go b/internal/streamcache/cache_test.go index f3a1bd57b..c8fdc82a6 100644 --- a/internal/streamcache/cache_test.go +++ b/internal/streamcache/cache_test.go @@ -365,8 +365,10 @@ func TestCache_unWriteableFile(t *testing.T) { _, err := io.WriteString(w, "hello") return err }) - require.IsType(t, &os.PathError{}, err) - require.Equal(t, "write", err.(*os.PathError).Op) + + var pathErr *os.PathError + require.True(t, errors.As(err, &pathErr)) + require.Equal(t, "write", pathErr.Op) } func TestCache_unCloseableFile(t *testing.T) { @@ -385,8 +387,10 @@ func TestCache_unCloseableFile(t *testing.T) { } _, _, err := c.Fetch(ctx, "key", io.Discard, func(w io.Writer) error { return nil }) - require.IsType(t, &os.PathError{}, err) - require.Equal(t, "close", err.(*os.PathError).Op) + + var pathErr *os.PathError + require.True(t, errors.As(err, &pathErr)) + require.Equal(t, "close", pathErr.Op) } func TestCache_cannotOpenFileForReading(t *testing.T) { @@ -406,8 +410,9 @@ func TestCache_cannotOpenFileForReading(t *testing.T) { _, _, err := c.Fetch(ctx, "key", io.Discard, func(w io.Writer) error { return nil }) err = errors.Unwrap(err) - require.IsType(t, &os.PathError{}, err) - require.Equal(t, "open", err.(*os.PathError).Op) + var pathErr *os.PathError + require.True(t, errors.As(err, &pathErr)) + require.Equal(t, "open", pathErr.Op) } func TestWaiter(t *testing.T) { diff --git a/internal/structerr/error.go b/internal/structerr/error.go index e0c5dd0c7..70cc9a58e 100644 --- a/internal/structerr/error.go +++ b/internal/structerr/error.go @@ -262,7 +262,8 @@ func (e Error) GRPCStatus() *status.Status { func (e Error) errorChain() []Error { var result []Error for err := error(e); err != nil; err = errors.Unwrap(err) { - if structErr, ok := err.(Error); ok { + var structErr Error + if errors.As(err, &structErr) { result = append(result, structErr) } } diff --git a/internal/testhelper/leakage.go b/internal/testhelper/leakage.go index 7a9c4006a..5aef11923 100644 --- a/internal/testhelper/leakage.go +++ b/internal/testhelper/leakage.go @@ -1,6 +1,7 @@ package testhelper import ( + "errors" "fmt" "os" "os/exec" @@ -81,13 +82,13 @@ func mustFindNoRunningChildProcess() error { return fmt.Errorf("found running child processes %s:\n%s", pidsComma, psOut) } - exitError, ok := err.(*exec.ExitError) - if !ok { + var exitErr *exec.ExitError + if !errors.As(err, &exitErr) { //nolint:gitaly-linters return fmt.Errorf("expected ExitError, got %T", err) } - if exitError.ExitCode() == 1 { + if exitErr.ExitCode() == 1 { return nil } diff --git a/internal/testhelper/testhelper.go b/internal/testhelper/testhelper.go index 6de813fb6..67905f67e 100644 --- a/internal/testhelper/testhelper.go +++ b/internal/testhelper/testhelper.go @@ -129,9 +129,10 @@ func MustRunCommand(tb testing.TB, stdin io.Reader, name string, args ...string) } output, err := cmd.Output() - if err != nil { - stderr := err.(*exec.ExitError).Stderr - require.NoError(tb, err, "%s %s: %s", name, args, stderr) + + var exitErr *exec.ExitError + if errors.As(err, &exitErr) { + require.NoError(tb, err, "%s %s: %s", name, args, exitErr.Stderr) } return output |