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  }