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  }