github.com/ahmet2mir/goreleaser@v0.180.3-0.20210927151101-8e5ee5a9b8c5/internal/pipe/defaults/defaults_test.go (about)

     1  package defaults
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/goreleaser/goreleaser/internal/testlib"
     7  	"github.com/goreleaser/goreleaser/pkg/config"
     8  	"github.com/goreleaser/goreleaser/pkg/context"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestDescription(t *testing.T) {
    13  	require.NotEmpty(t, Pipe{}.String())
    14  }
    15  
    16  func TestFillBasicData(t *testing.T) {
    17  	testlib.Mktmp(t)
    18  	testlib.GitInit(t)
    19  	testlib.GitRemoteAdd(t, "git@github.com:goreleaser/goreleaser.git")
    20  
    21  	ctx := &context.Context{
    22  		TokenType: context.TokenTypeGitHub,
    23  		Config:    config.Project{},
    24  	}
    25  
    26  	require.NoError(t, Pipe{}.Run(ctx))
    27  	require.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Owner)
    28  	require.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Name)
    29  	require.NotEmpty(t, ctx.Config.Builds)
    30  	require.Equal(t, "goreleaser", ctx.Config.Builds[0].Binary)
    31  	require.Equal(t, ".", ctx.Config.Builds[0].Main)
    32  	require.Contains(t, ctx.Config.Builds[0].Goos, "darwin")
    33  	require.Contains(t, ctx.Config.Builds[0].Goos, "linux")
    34  	require.Contains(t, ctx.Config.Builds[0].Goarch, "386")
    35  	require.Contains(t, ctx.Config.Builds[0].Goarch, "amd64")
    36  	require.Equal(t, "tar.gz", ctx.Config.Archives[0].Format)
    37  	require.Empty(t, ctx.Config.Dockers)
    38  	require.Equal(t, "https://github.com", ctx.Config.GitHubURLs.Download)
    39  	require.NotEmpty(t, ctx.Config.Archives[0].NameTemplate)
    40  	require.NotEmpty(t, ctx.Config.Builds[0].Ldflags)
    41  	require.NotEmpty(t, ctx.Config.Archives[0].Files)
    42  	require.NotEmpty(t, ctx.Config.Dist)
    43  }
    44  
    45  func TestFillPartial(t *testing.T) {
    46  	testlib.Mktmp(t)
    47  	testlib.GitInit(t)
    48  	testlib.GitRemoteAdd(t, "git@github.com:goreleaser/goreleaser.git")
    49  
    50  	ctx := &context.Context{
    51  		Config: config.Project{
    52  			GitHubURLs: config.GitHubURLs{
    53  				Download: "https://github.company.com",
    54  			},
    55  			Dist: "disttt",
    56  			Release: config.Release{
    57  				GitHub: config.Repo{
    58  					Owner: "goreleaser",
    59  					Name:  "test",
    60  				},
    61  			},
    62  			Archives: []config.Archive{
    63  				{
    64  					Files: []config.File{
    65  						{Source: "glob/*"},
    66  					},
    67  				},
    68  			},
    69  			Builds: []config.Build{
    70  				{
    71  					ID:     "build1",
    72  					Binary: "testreleaser",
    73  				},
    74  				{Goos: []string{"linux"}},
    75  				{
    76  					ID:     "build3",
    77  					Binary: "another",
    78  					Ignore: []config.IgnoredBuild{
    79  						{Goos: "darwin", Goarch: "amd64"},
    80  					},
    81  				},
    82  			},
    83  			Dockers: []config.Docker{
    84  				{
    85  					ImageTemplates: []string{"a/b"},
    86  				},
    87  			},
    88  			Brews: []config.Homebrew{
    89  				{
    90  					Description: "foo",
    91  				},
    92  			},
    93  		},
    94  	}
    95  	require.NoError(t, Pipe{}.Run(ctx))
    96  	require.Len(t, ctx.Config.Archives[0].Files, 1)
    97  	require.Equal(t, `bin.install "test"`, ctx.Config.Brews[0].Install)
    98  	require.NotEmpty(t, ctx.Config.Dockers[0].Goos)
    99  	require.NotEmpty(t, ctx.Config.Dockers[0].Goarch)
   100  	require.NotEmpty(t, ctx.Config.Dockers[0].Dockerfile)
   101  	require.Empty(t, ctx.Config.Dockers[0].Goarm)
   102  	require.Equal(t, "disttt", ctx.Config.Dist)
   103  	require.NotEqual(t, "https://github.com", ctx.Config.GitHubURLs.Download)
   104  
   105  	ctx = &context.Context{
   106  		TokenType: context.TokenTypeGitea,
   107  
   108  		Config: config.Project{
   109  			GiteaURLs: config.GiteaURLs{
   110  				API: "https://gitea.com/api/v1",
   111  			},
   112  		},
   113  	}
   114  	require.NoError(t, Pipe{}.Run(ctx))
   115  	require.Equal(t, "https://gitea.com", ctx.Config.GiteaURLs.Download)
   116  }
   117  
   118  func TestGiteaTemplateDownloadURL(t *testing.T) {
   119  	tests := []struct {
   120  		name    string
   121  		apiURL  string
   122  		wantErr bool
   123  	}{
   124  		{
   125  			name:   "string_url",
   126  			apiURL: "https://gitea.com/api/v1",
   127  		},
   128  		{
   129  			name:   "download_url_template",
   130  			apiURL: "{{ .Env.GORELEASER_TEST_GITEA_URLS_API }}",
   131  		},
   132  		{
   133  			name:    "download_url_template_invalid_value",
   134  			apiURL:  "{{ .Env.GORELEASER_NOT_EXISTS }}",
   135  			wantErr: true,
   136  		},
   137  		{
   138  			name:    "download_url_template_invalid",
   139  			apiURL:  "{{.dddddddddd",
   140  			wantErr: true,
   141  		},
   142  	}
   143  
   144  	for _, tt := range tests {
   145  		ctx := &context.Context{
   146  			TokenType: context.TokenTypeGitea,
   147  			Env: context.Env{
   148  				"GORELEASER_TEST_GITEA_URLS_API": "https://gitea.com/api/v1",
   149  			},
   150  			Config: config.Project{
   151  				GiteaURLs: config.GiteaURLs{
   152  					API: tt.apiURL,
   153  				},
   154  			},
   155  		}
   156  
   157  		err := Pipe{}.Run(ctx)
   158  		if tt.wantErr {
   159  			require.Error(t, err)
   160  			return
   161  		}
   162  
   163  		require.NoError(t, err)
   164  		require.Equal(t, "https://gitea.com", ctx.Config.GiteaURLs.Download)
   165  	}
   166  }