diff --git a/pipeline/defaults/defaults.go b/pipeline/defaults/defaults.go index 089c318d9..1ff64d426 100644 --- a/pipeline/defaults/defaults.go +++ b/pipeline/defaults/defaults.go @@ -41,6 +41,7 @@ func (Pipe) Run(ctx *context.Context) error { if ctx.Config.Brew.Install == "" { var installs []string for _, build := range ctx.Config.Builds { + // TODO: check for OSX builds only installs = append( installs, fmt.Sprintf(`bin.install "%s"`, build.Binary), @@ -66,31 +67,37 @@ func setReleaseDefaults(ctx *context.Context) error { } func setBuildDefaults(ctx *context.Context) { - var builds []config.Build - log.WithField("builds", ctx.Config.Builds).Debug("builds cleaned") - for _, build := range ctx.Config.Builds { - if build.Binary == "" { - build.Binary = ctx.Config.Release.GitHub.Name - } - if build.Main == "" { - build.Main = "." - } - if len(build.Goos) == 0 { - build.Goos = []string{"linux", "darwin"} - } - if len(build.Goarch) == 0 { - build.Goarch = []string{"amd64", "386"} - } - if len(build.Goarm) == 0 { - build.Goarm = []string{"6"} - } - if build.Ldflags == "" { - build.Ldflags = "-s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}" - } - builds = append(builds, build) + for i, build := range ctx.Config.Builds { + ctx.Config.Builds[i] = buildWithDefaults(ctx, build) } - ctx.Config.Builds = builds - log.WithField("builds", ctx.Config.Builds).Debug("set") + if len(ctx.Config.Builds) == 0 { + ctx.Config.Builds = []config.Build{ + buildWithDefaults(ctx, config.Build{}), + } + } + log.WithField("builds", ctx.Config.Builds).Info("set") +} + +func buildWithDefaults(ctx *context.Context, build config.Build) config.Build { + if build.Binary == "" { + build.Binary = ctx.Config.Release.GitHub.Name + } + if build.Main == "" { + build.Main = "." + } + if len(build.Goos) == 0 { + build.Goos = []string{"linux", "darwin"} + } + if len(build.Goarch) == 0 { + build.Goarch = []string{"amd64", "386"} + } + if len(build.Goarm) == 0 { + build.Goarm = []string{"6"} + } + if build.Ldflags == "" { + build.Ldflags = "-s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}" + } + return build } func setArchiveDefaults(ctx *context.Context) error { diff --git a/pipeline/defaults/defaults_test.go b/pipeline/defaults/defaults_test.go index bdd9051a9..c40f73c08 100644 --- a/pipeline/defaults/defaults_test.go +++ b/pipeline/defaults/defaults_test.go @@ -15,33 +15,32 @@ func TestDescription(t *testing.T) { } func TestFillBasicData(t *testing.T) { - assert := assert.New(t) - + var assert = assert.New(t) var ctx = &context.Context{ Config: config.Project{}, } assert.NoError(Pipe{}.Run(ctx)) - assert.Equal("goreleaser", ctx.Config.Release.GitHub.Owner) assert.Equal("goreleaser", ctx.Config.Release.GitHub.Name) - assert.Equal("goreleaser", ctx.Config.Build.Binary) - assert.Equal(".", ctx.Config.Build.Main) + assert.NotEmpty(ctx.Config.Builds) + assert.Equal("goreleaser", ctx.Config.Builds[0].Binary) + assert.Equal(".", ctx.Config.Builds[0].Main) + assert.Contains(ctx.Config.Builds[0].Goos, "darwin") + assert.Contains(ctx.Config.Builds[0].Goos, "linux") + assert.Contains(ctx.Config.Builds[0].Goarch, "386") + assert.Contains(ctx.Config.Builds[0].Goarch, "amd64") assert.Equal("tar.gz", ctx.Config.Archive.Format) - assert.Contains(ctx.Config.Build.Goos, "darwin") - assert.Contains(ctx.Config.Build.Goos, "linux") - assert.Contains(ctx.Config.Build.Goarch, "386") - assert.Contains(ctx.Config.Build.Goarch, "amd64") assert.Contains(ctx.Config.Brew.Install, "bin.install \"goreleaser\"") assert.NotEmpty( ctx.Config.Archive.NameTemplate, - ctx.Config.Build.Ldflags, + ctx.Config.Builds[0].Ldflags, ctx.Config.Archive.Files, ) } func TestFillPartial(t *testing.T) { - assert := assert.New(t) + var assert = assert.New(t) var ctx = &context.Context{ Config: config.Project{ @@ -56,6 +55,9 @@ func TestFillPartial(t *testing.T) { "glob/*", }, }, + Builds: []config.Build{ + {Binary: "testreleaser"}, + }, }, } assert.NoError(Pipe{}.Run(ctx)) diff --git a/pipeline/defaults/remote_test.go b/pipeline/defaults/remote_test.go index 2469d7024..23500dff0 100644 --- a/pipeline/defaults/remote_test.go +++ b/pipeline/defaults/remote_test.go @@ -1,8 +1,10 @@ package defaults import ( + "reflect" "testing" + "github.com/goreleaser/goreleaser/config" "github.com/stretchr/testify/assert" ) @@ -24,3 +26,65 @@ func TestExtractReporFromHttpsURL(t *testing.T) { repo := extractRepoFromURL("https://github.com/goreleaser/goreleaser.git") assert.Equal("goreleaser/goreleaser", repo.String()) } + +func Test_remoteRepo(t *testing.T) { + tests := []struct { + name string + wantResult config.Repo + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotResult, err := remoteRepo() + if (err != nil) != tt.wantErr { + t.Errorf("remoteRepo() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(gotResult, tt.wantResult) { + t.Errorf("remoteRepo() = %v, want %v", gotResult, tt.wantResult) + } + }) + } +} + +func Test_extractRepoFromURL(t *testing.T) { + type args struct { + s string + } + tests := []struct { + name string + args args + want config.Repo + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := extractRepoFromURL(tt.args.s); !reflect.DeepEqual(got, tt.want) { + t.Errorf("extractRepoFromURL() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_toRepo(t *testing.T) { + type args struct { + s string + } + tests := []struct { + name string + args args + want config.Repo + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := toRepo(tt.args.s); !reflect.DeepEqual(got, tt.want) { + t.Errorf("toRepo() = %v, want %v", got, tt.want) + } + }) + } +}