github.com/goreleaser/goreleaser@v1.25.1/internal/pipe/project/project_test.go (about) 1 package project 2 3 import ( 4 "os/exec" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/goreleaser/goreleaser/internal/testctx" 10 "github.com/goreleaser/goreleaser/internal/testlib" 11 "github.com/goreleaser/goreleaser/pkg/config" 12 ) 13 14 func TestCustomProjectName(t *testing.T) { 15 _ = testlib.Mktmp(t) 16 ctx := testctx.NewWithCfg(config.Project{ 17 ProjectName: "foo", 18 Release: config.Release{ 19 GitHub: config.Repo{ 20 Owner: "bar", 21 Name: "bar", 22 }, 23 }, 24 }) 25 require.NoError(t, Pipe{}.Default(ctx)) 26 require.Equal(t, "foo", ctx.Config.ProjectName) 27 } 28 29 func TestEmptyProjectName_DefaultsToGitHubRelease(t *testing.T) { 30 _ = testlib.Mktmp(t) 31 ctx := testctx.NewWithCfg(config.Project{ 32 Release: config.Release{ 33 GitHub: config.Repo{ 34 Owner: "bar", 35 Name: "bar", 36 }, 37 }, 38 }) 39 require.NoError(t, Pipe{}.Default(ctx)) 40 require.Equal(t, "bar", ctx.Config.ProjectName) 41 } 42 43 func TestEmptyProjectName_DefaultsToGitLabRelease(t *testing.T) { 44 _ = testlib.Mktmp(t) 45 ctx := testctx.NewWithCfg(config.Project{ 46 Release: config.Release{ 47 GitLab: config.Repo{ 48 Owner: "bar", 49 Name: "bar", 50 }, 51 }, 52 }) 53 require.NoError(t, Pipe{}.Default(ctx)) 54 require.Equal(t, "bar", ctx.Config.ProjectName) 55 } 56 57 func TestEmptyProjectName_DefaultsToGiteaRelease(t *testing.T) { 58 _ = testlib.Mktmp(t) 59 ctx := testctx.NewWithCfg(config.Project{ 60 Release: config.Release{ 61 Gitea: config.Repo{ 62 Owner: "bar", 63 Name: "bar", 64 }, 65 }, 66 }) 67 require.NoError(t, Pipe{}.Default(ctx)) 68 require.Equal(t, "bar", ctx.Config.ProjectName) 69 } 70 71 func TestEmptyProjectName_DefaultsToGoModPath(t *testing.T) { 72 _ = testlib.Mktmp(t) 73 ctx := testctx.New() 74 require.NoError(t, exec.Command("go", "mod", "init", "github.com/foo/bar").Run()) 75 require.NoError(t, Pipe{}.Default(ctx)) 76 require.Equal(t, "bar", ctx.Config.ProjectName) 77 } 78 79 func TestEmptyProjectName_DefaultsToGitURL(t *testing.T) { 80 _ = testlib.Mktmp(t) 81 ctx := testctx.New() 82 testlib.GitInit(t) 83 testlib.GitRemoteAdd(t, "git@github.com:foo/bar.git") 84 require.NoError(t, Pipe{}.Default(ctx)) 85 require.Equal(t, "bar", ctx.Config.ProjectName) 86 } 87 88 func TestEmptyProjectName_DefaultsToNonSCMGitURL(t *testing.T) { 89 _ = testlib.Mktmp(t) 90 ctx := testctx.New() 91 testlib.GitInit(t) 92 testlib.GitRemoteAdd(t, "git@myhost.local:bar.git") 93 require.EqualError(t, Pipe{}.Default(ctx), "couldn't guess project_name, please add it to your config") 94 } 95 96 func TestEmptyProjectNameAndRelease(t *testing.T) { 97 _ = testlib.Mktmp(t) 98 ctx := testctx.NewWithCfg(config.Project{ 99 Release: config.Release{ 100 GitHub: config.Repo{}, 101 }, 102 }) 103 require.EqualError(t, Pipe{}.Default(ctx), "couldn't guess project_name, please add it to your config") 104 }