github.com/marianogappa/goreleaser@v0.26.2-0.20170715090149-96acd0a9fc46/internal/name/name_test.go (about)

     1  package name
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/goreleaser/goreleaser/config"
     7  	"github.com/goreleaser/goreleaser/context"
     8  	"github.com/goreleaser/goreleaser/internal/buildtarget"
     9  	"github.com/goreleaser/goreleaser/pipeline/defaults"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestNameFor(t *testing.T) {
    14  	assert := assert.New(t)
    15  
    16  	var config = config.Project{
    17  		Archive: config.Archive{
    18  			NameTemplate: "{{.Binary}}_{{.Os}}_{{.Arch}}_{{.Tag}}_{{.Version}}",
    19  			Replacements: map[string]string{
    20  				"darwin": "Darwin",
    21  				"amd64":  "x86_64",
    22  			},
    23  		},
    24  		ProjectName: "test",
    25  	}
    26  	var ctx = &context.Context{
    27  		Config:  config,
    28  		Version: "1.2.3",
    29  		Git: context.GitInfo{
    30  			CurrentTag: "v1.2.3",
    31  		},
    32  	}
    33  
    34  	name, err := For(ctx, buildtarget.New("darwin", "amd64", ""))
    35  	assert.NoError(err)
    36  	assert.Equal("test_Darwin_x86_64_v1.2.3_1.2.3", name)
    37  }
    38  
    39  func TestNameForBuild(t *testing.T) {
    40  	assert := assert.New(t)
    41  
    42  	var ctx = &context.Context{
    43  		Config: config.Project{
    44  			Archive: config.Archive{
    45  				NameTemplate: "{{.Binary}}_{{.Os}}_{{.Arch}}_{{.Tag}}_{{.Version}}",
    46  				Replacements: map[string]string{
    47  					"darwin": "Darwin",
    48  					"amd64":  "x86_64",
    49  				},
    50  			},
    51  			ProjectName: "test",
    52  		},
    53  		Version: "1.2.3",
    54  		Git: context.GitInfo{
    55  			CurrentTag: "v1.2.3",
    56  		},
    57  	}
    58  
    59  	name, err := ForBuild(
    60  		ctx,
    61  		config.Build{Binary: "foo"},
    62  		buildtarget.New("darwin", "amd64", ""),
    63  	)
    64  	assert.NoError(err)
    65  	assert.Equal("foo_Darwin_x86_64_v1.2.3_1.2.3", name)
    66  }
    67  
    68  func TestInvalidNameTemplate(t *testing.T) {
    69  	var assert = assert.New(t)
    70  	var ctx = &context.Context{
    71  		Config: config.Project{
    72  			Archive: config.Archive{
    73  				NameTemplate: "{{.Binary}_{{.Os}}_{{.Arch}}_{{.Version}}",
    74  			},
    75  			ProjectName: "test",
    76  		},
    77  		Git: context.GitInfo{
    78  			CurrentTag: "v1.2.3",
    79  		},
    80  	}
    81  
    82  	_, err := For(ctx, buildtarget.New("darwin", "amd64", ""))
    83  	assert.Error(err)
    84  }
    85  
    86  func TestNameDefaltTemplate(t *testing.T) {
    87  	assert := assert.New(t)
    88  	var ctx = &context.Context{
    89  		Config: config.Project{
    90  			Archive: config.Archive{
    91  				NameTemplate: defaults.NameTemplate,
    92  			},
    93  			ProjectName: "test",
    94  		},
    95  		Version: "1.2.3",
    96  	}
    97  	type buildTarget struct {
    98  		goos, goarch, goarm string
    99  	}
   100  	for key, target := range map[string]buildtarget.Target{
   101  		"test_1.2.3_darwin_amd64": buildtarget.New("darwin", "amd64", ""),
   102  		"test_1.2.3_linux_arm64":  buildtarget.New("linux", "arm64", ""),
   103  		"test_1.2.3_linux_armv7":  buildtarget.New("linux", "arm", "7"),
   104  	} {
   105  		t.Run(key, func(t *testing.T) {
   106  			name, err := For(ctx, target)
   107  			assert.NoError(err)
   108  			assert.Equal(key, name)
   109  		})
   110  	}
   111  
   112  }