gitee.com/mirrors_opencollective/goreleaser@v0.45.0/pipeline/build/ldflags_test.go (about) 1 package build 2 3 import ( 4 "testing" 5 6 "github.com/goreleaser/goreleaser/config" 7 "github.com/goreleaser/goreleaser/context" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestLdFlagsFullTemplate(t *testing.T) { 12 var config = config.Project{ 13 Builds: []config.Build{ 14 { 15 Ldflags: `-s -w -X main.version={{.Version}} -X main.tag={{.Tag}} -X main.date={{.Date}} -X main.commit={{.Commit}} -X "main.foo={{.Env.FOO}}"`, 16 }, 17 }, 18 } 19 var ctx = &context.Context{ 20 Git: context.GitInfo{ 21 CurrentTag: "v1.2.3", 22 Commit: "123", 23 }, 24 Version: "1.2.3", 25 Config: config, 26 Env: map[string]string{"FOO": "123"}, 27 } 28 flags, err := ldflags(ctx, ctx.Config.Builds[0]) 29 assert.NoError(t, err) 30 assert.Contains(t, flags, "-s -w") 31 assert.Contains(t, flags, "-X main.version=1.2.3") 32 assert.Contains(t, flags, "-X main.tag=v1.2.3") 33 assert.Contains(t, flags, "-X main.commit=123") 34 assert.Contains(t, flags, "-X main.date=") 35 assert.Contains(t, flags, `-X "main.foo=123"`) 36 } 37 38 func TestInvalidTemplate(t *testing.T) { 39 for template, eerr := range map[string]string{ 40 "{{ .Nope }": `template: ldflags:1: unexpected "}" in operand`, 41 "{{.Env.NOPE}}": `template: ldflags:1:6: executing "ldflags" at <.Env.NOPE>: map has no entry for key "NOPE"`, 42 } { 43 t.Run(template, func(tt *testing.T) { 44 var config = config.Project{ 45 Builds: []config.Build{ 46 {Ldflags: template}, 47 }, 48 } 49 var ctx = &context.Context{ 50 Config: config, 51 } 52 flags, err := ldflags(ctx, ctx.Config.Builds[0]) 53 assert.EqualError(tt, err, eerr) 54 assert.Empty(tt, flags) 55 }) 56 } 57 }