diff --git a/.golangci.yml b/.golangci.yml index 837218dc748b..958b86998fa4 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -40,6 +40,7 @@ linters: - gosec # Detects security problems. - govet - ineffassign + - importas # Enforces consistent import aliases. - misspell # Detects commonly misspelled English words in comments. - nakedret # Detects uses of naked returns. - nilerr # Detects code that returns nil even if it checks that the error is not nil. @@ -108,6 +109,21 @@ linters: lll: line-length: 200 + importas: + # Do not allow unaliased imports of aliased packages. + no-unaliased: true + + alias: + # Enforce alias to prevent it accidentally being used instead of our + # own errdefs package (or vice-versa). + - pkg: github.com/containerd/errdefs + alias: cerrdefs + - pkg: github.com/opencontainers/image-spec/specs-go/v1 + alias: ocispec + # Enforce that gotest.tools/v3/assert/cmp is always aliased as "is" + - pkg: gotest.tools/v3/assert/cmp + alias: is + nakedret: # Disallow naked returns if func has more lines of code than this setting. # Default: 30 diff --git a/cli-plugins/manager/candidate_test.go b/cli-plugins/manager/candidate_test.go index dc0e960f639e..e8df42909949 100644 --- a/cli-plugins/manager/candidate_test.go +++ b/cli-plugins/manager/candidate_test.go @@ -9,7 +9,7 @@ import ( "github.com/docker/cli/cli-plugins/metadata" "github.com/spf13/cobra" "gotest.tools/v3/assert" - "gotest.tools/v3/assert/cmp" + is "gotest.tools/v3/assert/cmp" ) type fakeCandidate struct { @@ -81,7 +81,7 @@ func TestValidateCandidate(t *testing.T) { assert.ErrorContains(t, err, tc.err) case tc.invalid != "": assert.NilError(t, err) - assert.Assert(t, cmp.ErrorType(p.Err, reflect.TypeOf(&pluginError{}))) + assert.Assert(t, is.ErrorType(p.Err, reflect.TypeOf(&pluginError{}))) assert.ErrorContains(t, p.Err, tc.invalid) default: assert.NilError(t, err) diff --git a/cli/command/container/client_test.go b/cli/command/container/client_test.go index 61bf4c9ec82d..369c845e2110 100644 --- a/cli/command/container/client_test.go +++ b/cli/command/container/client_test.go @@ -11,7 +11,7 @@ import ( "github.com/docker/docker/api/types/network" "github.com/docker/docker/api/types/system" "github.com/docker/docker/client" - specs "github.com/opencontainers/image-spec/specs-go/v1" + ocispec "github.com/opencontainers/image-spec/specs-go/v1" ) type fakeClient struct { @@ -22,7 +22,7 @@ type fakeClient struct { createContainerFunc func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, - platform *specs.Platform, + platform *ocispec.Platform, containerName string) (container.CreateResponse, error) containerStartFunc func(containerID string, options container.StartOptions) error imageCreateFunc func(ctx context.Context, parentReference string, options image.CreateOptions) (io.ReadCloser, error) @@ -84,7 +84,7 @@ func (f *fakeClient) ContainerCreate( config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, - platform *specs.Platform, + platform *ocispec.Platform, containerName string, ) (container.CreateResponse, error) { if f.createContainerFunc != nil { diff --git a/cli/command/container/create.go b/cli/command/container/create.go index 8993ffce5c9c..54e73c9264f8 100644 --- a/cli/command/container/create.go +++ b/cli/command/container/create.go @@ -29,7 +29,7 @@ import ( "github.com/docker/docker/api/types/versions" "github.com/docker/docker/client" "github.com/docker/docker/errdefs" - specs "github.com/opencontainers/image-spec/specs-go/v1" + ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/pflag" @@ -308,7 +308,7 @@ func createContainer(ctx context.Context, dockerCli command.Cli, containerCfg *c } } - var platform *specs.Platform + var platform *ocispec.Platform // Engine API version 1.41 first introduced the option to specify platform on // create. It will produce an error if you try to set a platform on older API // versions, so check the API version here to maintain backwards diff --git a/cli/command/container/create_test.go b/cli/command/container/create_test.go index cb2251ac845e..fd94b624c822 100644 --- a/cli/command/container/create_test.go +++ b/cli/command/container/create_test.go @@ -19,7 +19,7 @@ import ( "github.com/docker/docker/api/types/network" "github.com/docker/docker/api/types/system" "github.com/google/go-cmp/cmp" - specs "github.com/opencontainers/image-spec/specs-go/v1" + ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/spf13/pflag" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" @@ -121,7 +121,7 @@ func TestCreateContainerImagePullPolicy(t *testing.T) { config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, - platform *specs.Platform, + platform *ocispec.Platform, containerName string, ) (container.CreateResponse, error) { defer func() { tc.ResponseCounter++ }() @@ -253,7 +253,7 @@ func TestNewCreateCommandWithContentTrustErrors(t *testing.T) { createContainerFunc: func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, - platform *specs.Platform, + platform *ocispec.Platform, containerName string, ) (container.CreateResponse, error) { return container.CreateResponse{}, errors.New("shouldn't try to pull image") @@ -308,7 +308,7 @@ func TestNewCreateCommandWithWarnings(t *testing.T) { createContainerFunc: func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, - platform *specs.Platform, + platform *ocispec.Platform, containerName string, ) (container.CreateResponse, error) { return container.CreateResponse{Warnings: tc.warnings}, nil @@ -347,7 +347,7 @@ func TestCreateContainerWithProxyConfig(t *testing.T) { createContainerFunc: func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, - platform *specs.Platform, + platform *ocispec.Platform, containerName string, ) (container.CreateResponse, error) { sort.Strings(config.Env) diff --git a/cli/command/container/run_test.go b/cli/command/container/run_test.go index bf48d3066d35..f60ebde360a1 100644 --- a/cli/command/container/run_test.go +++ b/cli/command/container/run_test.go @@ -21,7 +21,7 @@ import ( "github.com/docker/docker/api/types/image" "github.com/docker/docker/api/types/network" "github.com/docker/docker/pkg/jsonmessage" - specs "github.com/opencontainers/image-spec/specs-go/v1" + ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/spf13/pflag" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" @@ -57,7 +57,7 @@ func TestRunValidateFlags(t *testing.T) { func TestRunLabel(t *testing.T) { fakeCLI := test.NewFakeCli(&fakeClient{ - createContainerFunc: func(_ *container.Config, _ *container.HostConfig, _ *network.NetworkingConfig, _ *specs.Platform, _ string) (container.CreateResponse, error) { + createContainerFunc: func(_ *container.Config, _ *container.HostConfig, _ *network.NetworkingConfig, _ *ocispec.Platform, _ string) (container.CreateResponse, error) { return container.CreateResponse{ ID: "id", }, nil @@ -80,7 +80,7 @@ func TestRunAttach(t *testing.T) { var conn net.Conn attachCh := make(chan struct{}) fakeCLI := test.NewFakeCli(&fakeClient{ - createContainerFunc: func(_ *container.Config, _ *container.HostConfig, _ *network.NetworkingConfig, _ *specs.Platform, _ string) (container.CreateResponse, error) { + createContainerFunc: func(_ *container.Config, _ *container.HostConfig, _ *network.NetworkingConfig, _ *ocispec.Platform, _ string) (container.CreateResponse, error) { return container.CreateResponse{ ID: "id", }, nil @@ -151,7 +151,7 @@ func TestRunAttachTermination(t *testing.T) { killCh := make(chan struct{}) attachCh := make(chan struct{}) fakeCLI := test.NewFakeCli(&fakeClient{ - createContainerFunc: func(_ *container.Config, _ *container.HostConfig, _ *network.NetworkingConfig, _ *specs.Platform, _ string) (container.CreateResponse, error) { + createContainerFunc: func(_ *container.Config, _ *container.HostConfig, _ *network.NetworkingConfig, _ *ocispec.Platform, _ string) (container.CreateResponse, error) { return container.CreateResponse{ ID: "id", }, nil @@ -229,7 +229,7 @@ func TestRunPullTermination(t *testing.T) { attachCh := make(chan struct{}) fakeCLI := test.NewFakeCli(&fakeClient{ createContainerFunc: func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, - platform *specs.Platform, containerName string, + platform *ocispec.Platform, containerName string, ) (container.CreateResponse, error) { return container.CreateResponse{}, errors.New("shouldn't try to create a container") }, @@ -332,7 +332,7 @@ func TestRunCommandWithContentTrustErrors(t *testing.T) { createContainerFunc: func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, - platform *specs.Platform, + platform *ocispec.Platform, containerName string, ) (container.CreateResponse, error) { return container.CreateResponse{}, errors.New("shouldn't try to pull image") diff --git a/cli/context/store/metadata_test.go b/cli/context/store/metadata_test.go index baedb7735e31..b92ee302765b 100644 --- a/cli/context/store/metadata_test.go +++ b/cli/context/store/metadata_test.go @@ -10,7 +10,7 @@ import ( "github.com/docker/docker/errdefs" "gotest.tools/v3/assert" - "gotest.tools/v3/assert/cmp" + is "gotest.tools/v3/assert/cmp" ) func testMetadata(name string) Metadata { @@ -69,8 +69,8 @@ func TestMetadataRespectJsonAnnotation(t *testing.T) { assert.NilError(t, testee.createOrUpdate(testMetadata("test"))) bytes, err := os.ReadFile(filepath.Join(testDir, string(contextdirOf("test")), "meta.json")) assert.NilError(t, err) - assert.Assert(t, cmp.Contains(string(bytes), "a_very_recognizable_field_name")) - assert.Assert(t, cmp.Contains(string(bytes), "another_very_recognizable_field_name")) + assert.Assert(t, is.Contains(string(bytes), "a_very_recognizable_field_name")) + assert.Assert(t, is.Contains(string(bytes), "another_very_recognizable_field_name")) } func TestMetadataList(t *testing.T) {