diff --git a/bake/bake.go b/bake/bake.go index fd7f901bd..ad626ee6b 100644 --- a/bake/bake.go +++ b/bake/bake.go @@ -483,8 +483,7 @@ func (c Config) expandTargets(pattern string) ([]string, error) { func (c Config) loadLinks(name string, t *Target, m map[string]*Target, o map[string]map[string]Override, visited []string, ent *EntitlementConf) error { visited = append(visited, name) for _, v := range t.Contexts { - if strings.HasPrefix(v, "target:") { - target := strings.TrimPrefix(v, "target:") + if target, ok := strings.CutPrefix(v, "target:"); ok { if target == name { return errors.Errorf("target %s cannot link to itself", target) } @@ -1275,8 +1274,8 @@ func collectLocalPaths(t build.Inputs) []string { if v, ok := isLocalPath(t.DockerfilePath); ok { out = append(out, v) } - } else if strings.HasPrefix(t.ContextPath, "cwd://") { - out = append(out, strings.TrimPrefix(t.ContextPath, "cwd://")) + } else if v, ok := strings.CutPrefix(t.ContextPath, "cwd://"); ok { + out = append(out, v) } for _, v := range t.NamedContexts { if v.State != nil { @@ -1328,11 +1327,11 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) { bi.DockerfileInline = *t.DockerfileInline } updateContext(&bi, inp) - if strings.HasPrefix(bi.DockerfilePath, "cwd://") { + if v, ok := strings.CutPrefix(bi.DockerfilePath, "cwd://"); ok { // If Dockerfile is local for a remote invocation, we first check if // it's not outside the working directory and then resolve it to an // absolute path. - bi.DockerfilePath = path.Clean(strings.TrimPrefix(bi.DockerfilePath, "cwd://")) + bi.DockerfilePath = path.Clean(v) var err error bi.DockerfilePath, err = filepath.Abs(bi.DockerfilePath) if err != nil { @@ -1357,15 +1356,15 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) { return nil, errors.Errorf("reading a dockerfile for a remote build invocation is currently not supported") } } - if strings.HasPrefix(bi.ContextPath, "cwd://") { - bi.ContextPath = path.Clean(strings.TrimPrefix(bi.ContextPath, "cwd://")) + if v, ok := strings.CutPrefix(bi.ContextPath, "cwd://"); ok { + bi.ContextPath = path.Clean(v) } if !build.IsRemoteURL(bi.ContextPath) && bi.ContextState == nil && !filepath.IsAbs(bi.DockerfilePath) { bi.DockerfilePath = filepath.Join(bi.ContextPath, bi.DockerfilePath) } for k, v := range bi.NamedContexts { - if strings.HasPrefix(v.Path, "cwd://") { - bi.NamedContexts[k] = build.NamedContext{Path: path.Clean(strings.TrimPrefix(v.Path, "cwd://"))} + if v, ok := strings.CutPrefix(v.Path, "cwd://"); ok { + bi.NamedContexts[k] = build.NamedContext{Path: path.Clean(v)} } } diff --git a/bake/bake_test.go b/bake/bake_test.go index 40ff01bd5..482b83add 100644 --- a/bake/bake_test.go +++ b/bake/bake_test.go @@ -1381,7 +1381,6 @@ target "d" { }, } for _, tt := range cases { - tt := tt t.Run(tt.name, func(t *testing.T) { m, g, err := ReadTargets(ctx, []File{f}, []string{"d"}, tt.overrides, nil, &EntitlementConf{}) require.NoError(t, err) @@ -1454,7 +1453,6 @@ group "default" { }, } for _, tt := range cases { - tt := tt t.Run(tt.name, func(t *testing.T) { m, g, err := ReadTargets(ctx, []File{f}, []string{"default"}, tt.overrides, nil, &EntitlementConf{}) require.NoError(t, err) @@ -1509,7 +1507,6 @@ func TestTargetName(t *testing.T) { }, } for _, tt := range cases { - tt := tt t.Run(tt.target, func(t *testing.T) { _, _, err := ReadTargets(ctx, []File{{ Name: "docker-bake.hcl", @@ -1600,7 +1597,6 @@ target "f" { }, } for _, tt := range cases { - tt := tt t.Run(strings.Join(tt.names, "+"), func(t *testing.T) { m, g, err := ReadTargets(ctx, []File{f}, tt.names, nil, nil, &EntitlementConf{}) require.NoError(t, err) diff --git a/bake/compose.go b/bake/compose.go index 931fec362..1ca046d00 100644 --- a/bake/compose.go +++ b/bake/compose.go @@ -62,7 +62,6 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf g := &Group{Name: "default"} for _, s := range cfg.Services { - s := s if s.Build == nil { continue } @@ -144,7 +143,6 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf // compose does not support nil values for labels labels := map[string]*string{} for k, v := range s.Build.Labels { - v := v labels[k] = &v } diff --git a/bake/compose_test.go b/bake/compose_test.go index 7619fc7ab..e19ff1387 100644 --- a/bake/compose_test.go +++ b/bake/compose_test.go @@ -518,7 +518,6 @@ func TestServiceName(t *testing.T) { }, } for _, tt := range cases { - tt := tt t.Run(tt.svc, func(t *testing.T) { _, err := ParseCompose([]composetypes.ConfigFile{{Content: []byte(` services: @@ -589,7 +588,6 @@ services: }, } for _, tt := range cases { - tt := tt t.Run(tt.name, func(t *testing.T) { _, err := ParseCompose([]composetypes.ConfigFile{{Content: tt.dt}}, nil) if tt.wantErr { @@ -665,7 +663,6 @@ target "default" { }, } for _, tt := range cases { - tt := tt t.Run(tt.name, func(t *testing.T) { isCompose, err := validateComposeFile(tt.dt, tt.fn) assert.Equal(t, tt.isCompose, isCompose) diff --git a/bake/hclparser/hclparser.go b/bake/hclparser/hclparser.go index 24e3b7c1b..d132e9661 100644 --- a/bake/hclparser/hclparser.go +++ b/bake/hclparser/hclparser.go @@ -781,7 +781,6 @@ func Parse(b hcl.Body, opt Opt, val any) (*ParseMeta, hcl.Diagnostics) { } for _, a := range content.Attributes { - a := a return nil, hcl.Diagnostics{ &hcl.Diagnostic{ Severity: hcl.DiagError, @@ -834,7 +833,6 @@ func Parse(b hcl.Body, opt Opt, val any) (*ParseMeta, hcl.Diagnostics) { context = subject } else { for _, block := range blocks.Blocks { - block := block if block.Type == "function" && len(block.Labels) == 1 && block.Labels[0] == k { subject = block.LabelRanges[0].Ptr() context = block.DefRange.Ptr() @@ -903,7 +901,6 @@ func Parse(b hcl.Body, opt Opt, val any) (*ParseMeta, hcl.Diagnostics) { diags = hcl.Diagnostics{} for _, b := range content.Blocks { - b := b v := reflect.ValueOf(val) err := p.resolveBlock(b, nil) diff --git a/build/build.go b/build/build.go index a857fba4d..0f8fca6d8 100644 --- a/build/build.go +++ b/build/build.go @@ -383,7 +383,6 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opts map[ wg.Add(1) sharedSessionsWG[node.Name] = wg for _, s := range sessions { - s := s eg.Go(func() error { return s.Run(baseCtx, c.Dialer()) }) diff --git a/build/git_test.go b/build/git_test.go index 9a9668bf0..5b33049d8 100644 --- a/build/git_test.go +++ b/build/git_test.go @@ -109,7 +109,6 @@ func TestGetGitAttributes(t *testing.T) { }, } for _, tt := range cases { - tt := tt t.Run(tt.name, func(t *testing.T) { setupTest(t) if tt.envGitLabels != "" { diff --git a/build/opt.go b/build/opt.go index ade779661..a1014022a 100644 --- a/build/opt.go +++ b/build/opt.go @@ -503,8 +503,7 @@ func loadInputs(ctx context.Context, d *driver.DriverHandle, inp *Inputs, pw pro } // handle OCI layout - if strings.HasPrefix(v.Path, "oci-layout://") { - localPath := strings.TrimPrefix(v.Path, "oci-layout://") + if localPath, ok := strings.CutPrefix(v.Path, "oci-layout://"); ok { localPath, dig, hasDigest := strings.Cut(localPath, "@") localPath, tag, hasTag := strings.Cut(localPath, ":") if !hasTag { diff --git a/build/provenance.go b/build/provenance.go index b6cca56f4..b355f8e51 100644 --- a/build/provenance.go +++ b/build/provenance.go @@ -92,7 +92,6 @@ func fetchProvenance(ctx context.Context, c *client.Client, ref string, mode con }) } else if ev.Record.Results != nil { for platform, res := range ev.Record.Results { - platform := platform desc := lookupProvenance(res) if desc == nil { continue diff --git a/build/utils_test.go b/build/utils_test.go index f12eda3a4..02b597b91 100644 --- a/build/utils_test.go +++ b/build/utils_test.go @@ -130,7 +130,6 @@ func TestToBuildkitExtraHosts(t *testing.T) { } for _, tc := range tests { - tc := tc if tc.expectedOut == "" { tc.expectedOut = strings.Join(tc.input, ",") } diff --git a/builder/builder_test.go b/builder/builder_test.go index 59ab5da8f..6c3080683 100644 --- a/builder/builder_test.go +++ b/builder/builder_test.go @@ -190,7 +190,6 @@ foo = "bar" }, } for _, tt := range testCases { - tt := tt t.Run(tt.name, func(t *testing.T) { flags, err := parseBuildkitdFlags(tt.flags, tt.driver, tt.driverOpts, tt.buildkitdConfigFile) if tt.wantErr { diff --git a/commands/bake.go b/commands/bake.go index e34dbb843..e9636e2fe 100644 --- a/commands/bake.go +++ b/commands/bake.go @@ -559,8 +559,7 @@ func readBakeFiles(ctx context.Context, nodes []builder.Node, url string, names var rnames []string // remote var anames []string // both for _, v := range names { - if strings.HasPrefix(v, "cwd://") { - tname := strings.TrimPrefix(v, "cwd://") + if tname, ok := strings.CutPrefix(v, "cwd://"); ok { lnames = append(lnames, tname) anames = append(anames, tname) } else { diff --git a/commands/history/inspect.go b/commands/history/inspect.go index 772530bc6..6fd2a252a 100644 --- a/commands/history/inspect.go +++ b/commands/history/inspect.go @@ -869,9 +869,9 @@ func printTable(w io.Writer, kvs []keyValueOutput, title string) { func readKeyValues(attrs map[string]string, prefix string) []keyValueOutput { var out []keyValueOutput for k, v := range attrs { - if strings.HasPrefix(k, prefix) { + if name, ok := strings.CutPrefix(k, prefix); ok { out = append(out, keyValueOutput{ - Name: strings.TrimPrefix(k, prefix), + Name: name, Value: v, }) } diff --git a/commands/history/rm.go b/commands/history/rm.go index 596fd567e..4f5338d95 100644 --- a/commands/history/rm.go +++ b/commands/history/rm.go @@ -43,7 +43,6 @@ func runRm(ctx context.Context, dockerCli command.Cli, opts rmOptions) error { eg, ctx := errgroup.WithContext(ctx) for i, node := range nodes { - node := node eg.Go(func() error { if node.Driver == nil { return nil diff --git a/commands/history/utils.go b/commands/history/utils.go index 95c8702e1..4f4d31bd2 100644 --- a/commands/history/utils.go +++ b/commands/history/utils.go @@ -139,7 +139,6 @@ func queryRecords(ctx context.Context, ref string, nodes []builder.Node, opts *q eg, ctx := errgroup.WithContext(ctx) for _, node := range nodes { - node := node eg.Go(func() error { if node.Driver == nil { return nil diff --git a/commands/imagetools/create.go b/commands/imagetools/create.go index 8f6768459..fc2ad0661 100644 --- a/commands/imagetools/create.go +++ b/commands/imagetools/create.go @@ -184,7 +184,6 @@ func runCreate(ctx context.Context, dockerCli command.Cli, in createOptions, arg pw := progress.WithPrefix(printer, "internal", true) for _, t := range tags { - t := t eg.Go(func() error { return progress.Wrap(fmt.Sprintf("pushing %s", t.String()), pw.Write, func(sub progress.SubLogger) error { eg2, _ := errgroup.WithContext(ctx) diff --git a/commands/ls_test.go b/commands/ls_test.go index a428213a5..cdfee8437 100644 --- a/commands/ls_test.go +++ b/commands/ls_test.go @@ -164,7 +164,6 @@ func TestTruncPlatforms(t *testing.T) { }, } for _, tt := range tests { - tt := tt t.Run(tt.name, func(t *testing.T) { tpfs := truncPlatforms(tt.platforms, tt.max) assert.Equal(t, tt.expectedList, tpfs.List()) diff --git a/controller/build/options.go b/controller/build/options.go index dba752b92..817f48368 100644 --- a/controller/build/options.go +++ b/controller/build/options.go @@ -70,9 +70,8 @@ func ResolveOptionPaths(options *Options) (_ *Options, err error) { for k, v := range options.NamedContexts { if isRemoteURL(v) || strings.HasPrefix(v, "docker-image://") { // url prefix, this is a remote path - } else if strings.HasPrefix(v, "oci-layout://") { + } else if p, ok := strings.CutPrefix(v, "oci-layout://"); ok { // oci layout prefix, this is a local path - p := strings.TrimPrefix(v, "oci-layout://") p, err = filepath.Abs(p) if err != nil { return nil, err diff --git a/controller/build/options_test.go b/controller/build/options_test.go index 548351d0e..aa814e780 100644 --- a/controller/build/options_test.go +++ b/controller/build/options_test.go @@ -240,7 +240,6 @@ func TestResolvePaths(t *testing.T) { }, } for _, tt := range tests { - tt := tt t.Run(tt.name, func(t *testing.T) { got, err := ResolveOptionPaths(tt.options) require.NoError(t, err) diff --git a/driver/docker/version_test.go b/driver/docker/version_test.go index 03b2c6a6b..c342ba862 100644 --- a/driver/docker/version_test.go +++ b/driver/docker/version_test.go @@ -9,7 +9,6 @@ import ( func TestConstraint(t *testing.T) { for _, tt := range mobyBuildkitVersions { - tt := tt t.Run(tt.MobyVersionConstraint, func(t *testing.T) { _, err := semver.NewConstraint(tt.MobyVersionConstraint) require.NoError(t, err) @@ -121,7 +120,6 @@ func TestResolveBuildKitVersion(t *testing.T) { }, } for _, tt := range cases { - tt := tt t.Run(tt.mobyVersion, func(t *testing.T) { bkVersion, err := resolveBuildKitVersion(tt.mobyVersion) if tt.err { diff --git a/tests/ls.go b/tests/ls.go index 23ad60d15..5898c7fb9 100644 --- a/tests/ls.go +++ b/tests/ls.go @@ -36,7 +36,6 @@ func testLs(t *testing.T, sb integration.Sandbox) { sbDriver, _, _ := driverName(sb.Name()) for _, tt := range tests { - tt := tt t.Run(tt.name, func(t *testing.T) { out, err := lsCmd(sb, withArgs(tt.args...)) require.NoError(t, err, out) diff --git a/util/confutil/config_unix_test.go b/util/confutil/config_unix_test.go index 2d217b4f4..32bf36499 100644 --- a/util/confutil/config_unix_test.go +++ b/util/confutil/config_unix_test.go @@ -49,7 +49,6 @@ func TestIsSubPath(t *testing.T) { }, } for _, tt := range tests { - tt := tt t.Run(tt.name, func(t *testing.T) { ok, err := isSubPath(tt.basePath, tt.subPath) require.NoError(t, err) diff --git a/util/dockerutil/progress.go b/util/dockerutil/progress.go index 608c9c2a4..10f20f7c9 100644 --- a/util/dockerutil/progress.go +++ b/util/dockerutil/progress.go @@ -17,7 +17,6 @@ func fromReader(l progress.SubLogger, rc io.ReadCloser) error { defer func() { for _, st := range started { - st := st if st.Completed == nil { now := time.Now() st.Completed = &now diff --git a/util/gitutil/credentials_test.go b/util/gitutil/credentials_test.go index a2b7f5295..7225f8dc1 100644 --- a/util/gitutil/credentials_test.go +++ b/util/gitutil/credentials_test.go @@ -35,7 +35,6 @@ func TestStripCredentials(t *testing.T) { }, } for _, tt := range cases { - tt := tt t.Run(tt.name, func(t *testing.T) { if g, w := stripCredentials(tt.url), tt.want; g != w { t.Fatalf("got: %q\nwant: %q", g, w) diff --git a/util/gitutil/gitutil_test.go b/util/gitutil/gitutil_test.go index cb3936fe1..4eb09ba53 100644 --- a/util/gitutil/gitutil_test.go +++ b/util/gitutil/gitutil_test.go @@ -200,7 +200,6 @@ func TestGitRemoteURL(t *testing.T) { }, } for _, tt := range cases { - tt := tt t.Run(tt.name, func(t *testing.T) { gittestutil.Mktmp(t) c, err := gitutil.New() diff --git a/util/imagetools/loader.go b/util/imagetools/loader.go index d7753b564..3650bcaf3 100644 --- a/util/imagetools/loader.go +++ b/util/imagetools/loader.go @@ -225,7 +225,6 @@ func (l *loader) fetch(ctx context.Context, fetcher remotes.Fetcher, desc ocispe eg, ctx := errgroup.WithContext(ctx) for _, d := range idx.Manifests { - d := d eg.Go(func() error { return l.fetch(ctx, fetcher, d, r) }) diff --git a/util/otelutil/span_test.go b/util/otelutil/span_test.go index fb52d1097..b4b500054 100644 --- a/util/otelutil/span_test.go +++ b/util/otelutil/span_test.go @@ -145,7 +145,6 @@ func TestAsAttributeKeyValue(t *testing.T) { }, } for _, tt := range tests { - tt := tt t.Run(tt.name, func(t *testing.T) { kv := keyValue{ Key: "key",