diff --git a/internal/pipe/build/build.go b/internal/pipe/build/build.go index 50cee81fe..cd382ec64 100644 --- a/internal/pipe/build/build.go +++ b/internal/pipe/build/build.go @@ -63,7 +63,7 @@ func buildWithDefaults(ctx *context.Context, build config.Build) config.Build { build.Binary = ctx.Config.ProjectName } if build.ID == "" { - build.ID = build.Binary + build.ID = ctx.Config.ProjectName } for k, v := range build.Env { build.Env[k] = os.ExpandEnv(v) diff --git a/internal/pipe/build/build_test.go b/internal/pipe/build/build_test.go index eb99ddc1f..301e79b66 100644 --- a/internal/pipe/build/build_test.go +++ b/internal/pipe/build/build_test.go @@ -229,6 +229,7 @@ func TestDefaultEmptyBuild(t *testing.T) { } assert.NoError(t, Pipe{}.Default(ctx)) var build = ctx.Config.Builds[0] + assert.Equal(t, ctx.Config.ProjectName, build.ID) assert.Equal(t, ctx.Config.ProjectName, build.Binary) assert.Equal(t, ".", build.Main) assert.Equal(t, []string{"linux", "darwin"}, build.Goos) @@ -238,6 +239,25 @@ func TestDefaultEmptyBuild(t *testing.T) { assert.Equal(t, "-s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} -X main.builtBy=goreleaser", build.Ldflags[0]) } +func TestDefaultBuildID(t *testing.T) { + var ctx = &context.Context{ + Config: config.Project{ + ProjectName: "foo", + Builds: []config.Build{ + { + Binary: "{{.Env.FOO}}", + }, + { + Binary: "bar", + }, + }, + }, + } + assert.EqualError(t, Pipe{}.Default(ctx), "found 2 items with the ID 'foo', please fix your config") + var build = ctx.Config.Builds[0] + assert.Equal(t, ctx.Config.ProjectName, build.ID) +} + func TestSeveralBuildsWithTheSameID(t *testing.T) { var ctx = &context.Context{ Config: config.Project{ diff --git a/internal/pipe/defaults/defaults_test.go b/internal/pipe/defaults/defaults_test.go index e78b5fe13..2637e424b 100644 --- a/internal/pipe/defaults/defaults_test.go +++ b/internal/pipe/defaults/defaults_test.go @@ -68,9 +68,13 @@ func TestFillPartial(t *testing.T) { }, }, Builds: []config.Build{ - {Binary: "testreleaser"}, + { + ID: "build1", + Binary: "testreleaser", + }, {Goos: []string{"linux"}}, { + ID: "build3", Binary: "another", Ignore: []config.IgnoredBuild{ {Goos: "darwin", Goarch: "amd64"},