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 }