github.com/tomsquest/goreleaser@v0.34.3-0.20171008022654-7d6ef4d338b3/pipeline/defaults/defaults_test.go (about)

     1  package defaults
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/goreleaser/goreleaser/config"
     9  	"github.com/goreleaser/goreleaser/context"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestDescription(t *testing.T) {
    14  	assert.NotEmpty(t, Pipe{}.Description())
    15  }
    16  
    17  func TestFillBasicData(t *testing.T) {
    18  	var ctx = &context.Context{
    19  		Config: config.Project{},
    20  	}
    21  
    22  	assert.NoError(t, Pipe{}.Run(ctx))
    23  	assert.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Owner)
    24  	assert.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Name)
    25  	assert.NotEmpty(t, ctx.Config.Builds)
    26  	assert.Equal(t, "goreleaser", ctx.Config.Builds[0].Binary)
    27  	assert.Equal(t, ".", ctx.Config.Builds[0].Main)
    28  	assert.Contains(t, ctx.Config.Builds[0].Goos, "darwin")
    29  	assert.Contains(t, ctx.Config.Builds[0].Goos, "linux")
    30  	assert.Contains(t, ctx.Config.Builds[0].Goarch, "386")
    31  	assert.Contains(t, ctx.Config.Builds[0].Goarch, "amd64")
    32  	assert.Equal(t, "tar.gz", ctx.Config.Archive.Format)
    33  	assert.Contains(t, ctx.Config.Brew.Install, "bin.install \"goreleaser\"")
    34  	assert.Empty(t, ctx.Config.Dockers)
    35  	assert.Equal(t, ctx.Config.Brew.CommitAuthor.Name, "goreleaserbot")
    36  	assert.Equal(t, ctx.Config.Brew.CommitAuthor.Email, "goreleaser@carlosbecker.com")
    37  	assert.NotEmpty(
    38  		t,
    39  		ctx.Config.Archive.NameTemplate,
    40  		ctx.Config.Builds[0].Ldflags,
    41  		ctx.Config.Archive.Files,
    42  	)
    43  }
    44  
    45  func TestFillPartial(t *testing.T) {
    46  
    47  	var ctx = &context.Context{
    48  		Config: config.Project{
    49  			Release: config.Release{
    50  				GitHub: config.Repo{
    51  					Owner: "goreleaser",
    52  					Name:  "test",
    53  				},
    54  			},
    55  			Archive: config.Archive{
    56  				Files: []string{
    57  					"glob/*",
    58  				},
    59  			},
    60  			Builds: []config.Build{
    61  				{Binary: "testreleaser"},
    62  				{Goos: []string{"linux"}},
    63  				{
    64  					Binary: "another",
    65  					Ignore: []config.IgnoredBuild{
    66  						{Goos: "darwin", Goarch: "amd64"},
    67  					},
    68  				},
    69  			},
    70  			Dockers: []config.Docker{
    71  				{Image: "a/b"},
    72  			},
    73  		},
    74  	}
    75  	assert.NoError(t, Pipe{}.Run(ctx))
    76  	assert.Len(t, ctx.Config.Archive.Files, 1)
    77  	assert.Equal(t, `bin.install "testreleaser"`, ctx.Config.Brew.Install)
    78  	assert.NotEmpty(t, ctx.Config.Dockers[0].Binary)
    79  	assert.NotEmpty(t, ctx.Config.Dockers[0].Goos)
    80  	assert.NotEmpty(t, ctx.Config.Dockers[0].Goarch)
    81  	assert.NotEmpty(t, ctx.Config.Dockers[0].Dockerfile)
    82  	assert.Empty(t, ctx.Config.Dockers[0].Goarm)
    83  }
    84  
    85  func TestFillSingleBuild(t *testing.T) {
    86  
    87  	var ctx = &context.Context{
    88  		Config: config.Project{
    89  			SingleBuild: config.Build{
    90  				Main: "testreleaser",
    91  			},
    92  		},
    93  	}
    94  	assert.NoError(t, Pipe{}.Run(ctx))
    95  	assert.Len(t, ctx.Config.Builds, 1)
    96  	assert.Equal(t, ctx.Config.Builds[0].Binary, "goreleaser")
    97  }
    98  
    99  func TestNotAGitRepo(t *testing.T) {
   100  	folder, err := ioutil.TempDir("", "goreleasertest")
   101  	assert.NoError(t, err)
   102  	previous, err := os.Getwd()
   103  	assert.NoError(t, err)
   104  	assert.NoError(t, os.Chdir(folder))
   105  	defer func() {
   106  		assert.NoError(t, os.Chdir(previous))
   107  	}()
   108  	var ctx = &context.Context{
   109  		Config: config.Project{},
   110  	}
   111  	assert.Error(t, Pipe{}.Run(ctx))
   112  }