github.com/goreleaser/goreleaser@v1.25.1/internal/pipe/release/scm_test.go (about) 1 package release 2 3 import ( 4 "testing" 5 6 "github.com/goreleaser/goreleaser/internal/git" 7 "github.com/goreleaser/goreleaser/internal/testctx" 8 "github.com/goreleaser/goreleaser/pkg/config" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestSetupGitLab(t *testing.T) { 13 t.Run("no repo", func(t *testing.T) { 14 ctx := testctx.New() 15 require.NoError(t, setupGitLab(ctx)) 16 repo, err := git.ExtractRepoFromConfig(ctx) 17 require.NoError(t, err) 18 require.Equal(t, repo.Owner, ctx.Config.Release.GitLab.Owner) 19 require.Equal(t, repo.Name, ctx.Config.Release.GitLab.Name) 20 }) 21 22 t.Run("with templates", func(t *testing.T) { 23 ctx := testctx.NewWithCfg(config.Project{ 24 Env: []string{"NAME=foo", "OWNER=bar"}, 25 GitLabURLs: config.GitLabURLs{ 26 Download: "https://{{ .Env.OWNER }}/download", 27 }, 28 Release: config.Release{ 29 GitLab: config.Repo{ 30 Owner: "{{.Env.OWNER}}", 31 Name: "{{.Env.NAME}}", 32 }, 33 }, 34 }) 35 36 require.NoError(t, setupGitLab(ctx)) 37 require.Equal(t, "bar", ctx.Config.Release.GitLab.Owner) 38 require.Equal(t, "foo", ctx.Config.Release.GitLab.Name) 39 require.Equal(t, "https://bar/download/bar/foo/-/releases/", ctx.ReleaseURL) 40 }) 41 42 t.Run("with invalid templates", func(t *testing.T) { 43 t.Run("owner", func(t *testing.T) { 44 ctx := testctx.NewWithCfg(config.Project{ 45 Release: config.Release{ 46 GitLab: config.Repo{ 47 Name: "foo", 48 Owner: "{{.Env.NOPE}}", 49 }, 50 }, 51 }) 52 53 require.Error(t, setupGitLab(ctx)) 54 }) 55 56 t.Run("name", func(t *testing.T) { 57 ctx := testctx.NewWithCfg(config.Project{ 58 Release: config.Release{ 59 GitLab: config.Repo{ 60 Name: "{{.Env.NOPE}}", 61 }, 62 }, 63 }) 64 65 require.Error(t, setupGitLab(ctx)) 66 }) 67 }) 68 } 69 70 func TestSetupGitea(t *testing.T) { 71 t.Run("no repo", func(t *testing.T) { 72 ctx := testctx.New() 73 require.NoError(t, setupGitea(ctx)) 74 require.Equal(t, "goreleaser", ctx.Config.Release.Gitea.Owner) 75 require.Equal(t, "goreleaser", ctx.Config.Release.Gitea.Name) 76 }) 77 78 t.Run("with templates", func(t *testing.T) { 79 ctx := testctx.NewWithCfg(config.Project{ 80 Env: []string{"NAME=foo", "OWNER=bar"}, 81 GiteaURLs: config.GiteaURLs{ 82 Download: "https://{{ .Env.OWNER }}/download", 83 }, 84 Release: config.Release{ 85 Gitea: config.Repo{ 86 Owner: "{{.Env.OWNER}}", 87 Name: "{{.Env.NAME}}", 88 }, 89 }, 90 }) 91 92 require.NoError(t, setupGitea(ctx)) 93 require.Equal(t, "bar", ctx.Config.Release.Gitea.Owner) 94 require.Equal(t, "foo", ctx.Config.Release.Gitea.Name) 95 require.Equal(t, "https://bar/download/bar/foo/releases/tag/", ctx.ReleaseURL) 96 }) 97 98 t.Run("with invalid templates", func(t *testing.T) { 99 t.Run("owner", func(t *testing.T) { 100 ctx := testctx.NewWithCfg(config.Project{ 101 Release: config.Release{ 102 Gitea: config.Repo{ 103 Name: "foo", 104 Owner: "{{.Env.NOPE}}", 105 }, 106 }, 107 }) 108 109 require.Error(t, setupGitea(ctx)) 110 }) 111 112 t.Run("name", func(t *testing.T) { 113 ctx := testctx.NewWithCfg(config.Project{ 114 Release: config.Release{ 115 Gitea: config.Repo{ 116 Name: "{{.Env.NOPE}}", 117 }, 118 }, 119 }) 120 121 require.Error(t, setupGitea(ctx)) 122 }) 123 }) 124 } 125 126 func TestSetupGitHub(t *testing.T) { 127 t.Run("no repo", func(t *testing.T) { 128 ctx := testctx.New() 129 require.NoError(t, setupGitHub(ctx)) 130 require.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Owner) 131 require.Equal(t, "goreleaser", ctx.Config.Release.GitHub.Name) 132 }) 133 134 t.Run("with templates", func(t *testing.T) { 135 ctx := testctx.NewWithCfg(config.Project{ 136 Env: []string{"NAME=foo", "OWNER=bar"}, 137 GitHubURLs: config.GitHubURLs{ 138 Download: "https://{{ .Env.OWNER }}/download", 139 }, 140 Release: config.Release{ 141 GitHub: config.Repo{ 142 Owner: "{{.Env.OWNER}}", 143 Name: "{{.Env.NAME}}", 144 }, 145 }, 146 }) 147 148 require.NoError(t, setupGitHub(ctx)) 149 require.Equal(t, "bar", ctx.Config.Release.GitHub.Owner) 150 require.Equal(t, "foo", ctx.Config.Release.GitHub.Name) 151 require.Equal(t, "https://bar/download/bar/foo/releases/tag/", ctx.ReleaseURL) 152 }) 153 154 t.Run("with invalid templates", func(t *testing.T) { 155 t.Run("owner", func(t *testing.T) { 156 ctx := testctx.NewWithCfg(config.Project{ 157 Release: config.Release{ 158 GitHub: config.Repo{ 159 Name: "foo", 160 Owner: "{{.Env.NOPE}}", 161 }, 162 }, 163 }) 164 165 require.Error(t, setupGitHub(ctx)) 166 }) 167 168 t.Run("name", func(t *testing.T) { 169 ctx := testctx.NewWithCfg(config.Project{ 170 Release: config.Release{ 171 GitHub: config.Repo{ 172 Name: "{{.Env.NOPE}}", 173 }, 174 }, 175 }) 176 177 require.Error(t, setupGitHub(ctx)) 178 }) 179 }) 180 }