github.com/jasei/goreleaser@v0.62.4-0.20180312171904-62cb6a8963a6/internal/filenametemplate/template_test.go (about) 1 package filenametemplate 2 3 import ( 4 "testing" 5 6 "github.com/goreleaser/goreleaser/config" 7 "github.com/goreleaser/goreleaser/context" 8 "github.com/goreleaser/goreleaser/internal/artifact" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestTemplate(t *testing.T) { 13 var ctx = context.New(config.Project{ 14 ProjectName: "proj", 15 }) 16 ctx.Env = map[string]string{ 17 "FOO": "bar", 18 } 19 ctx.Version = "1.0.0" 20 ctx.Git.CurrentTag = "v1.0.0" 21 var artifact = artifact.Artifact{ 22 Name: "not-this-binary", 23 Goarch: "amd64", 24 Goos: "linux", 25 Goarm: "6", 26 Extra: map[string]string{ 27 "Binary": "binary", 28 }, 29 } 30 var fields = NewFields(ctx, map[string]string{"linux": "Linux"}, artifact) 31 for expect, tmpl := range map[string]string{ 32 "bar": "{{.Env.FOO}}", 33 "Linux": "{{.Os}}", 34 "amd64": "{{.Arch}}", 35 "6": "{{.Arm}}", 36 "1.0.0": "{{.Version}}", 37 "v1.0.0": "{{.Tag}}", 38 "binary": "{{.Binary}}", 39 "proj": "{{.ProjectName}}", 40 } { 41 tmpl := tmpl 42 expect := expect 43 t.Run(expect, func(tt *testing.T) { 44 tt.Parallel() 45 result, err := Apply(tmpl, fields) 46 assert.NoError(tt, err) 47 assert.Equal(tt, expect, result) 48 }) 49 } 50 } 51 52 func TestNewFields(t *testing.T) { 53 var ctx = context.New(config.Project{ 54 ProjectName: "proj", 55 }) 56 ctx.Version = "1.0.0" 57 ctx.Git.CurrentTag = "v1.0.0" 58 var artifact = artifact.Artifact{ 59 Name: "not-this-binary", 60 Goarch: "amd64", 61 Goos: "linux", 62 Goarm: "6", 63 Extra: map[string]string{ 64 "Binary": "binary", 65 }, 66 } 67 var fields = NewFields(ctx, map[string]string{}, artifact, artifact) 68 assert.Equal(t, "proj", fields.Binary) 69 } 70 71 func TestInvalidTemplate(t *testing.T) { 72 var ctx = context.New(config.Project{}) 73 var fields = NewFields(ctx, map[string]string{}, artifact.Artifact{}) 74 result, err := Apply("{{.Foo}", fields) 75 assert.Empty(t, result) 76 assert.EqualError(t, err, `template: {{.Foo}:1: unexpected "}" in operand`) 77 } 78 79 func TestEnvNotFound(t *testing.T) { 80 var ctx = context.New(config.Project{}) 81 var fields = NewFields(ctx, map[string]string{}, artifact.Artifact{}) 82 result, err := Apply("{{.Env.FOO}}", fields) 83 assert.Empty(t, result) 84 assert.EqualError(t, err, `template: {{.Env.FOO}}:1:6: executing "{{.Env.FOO}}" at <.Env.FOO>: map has no entry for key "FOO"`) 85 }