github.com/triarius/goreleaser@v1.12.5/internal/git/config_test.go (about) 1 package git_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/triarius/goreleaser/internal/git" 8 "github.com/triarius/goreleaser/internal/testlib" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestNotARepo(t *testing.T) { 13 testlib.Mktmp(t) 14 _, err := git.ExtractRepoFromConfig(context.Background()) 15 require.EqualError(t, err, `current folder is not a git repository`) 16 } 17 18 func TestNoRemote(t *testing.T) { 19 testlib.Mktmp(t) 20 testlib.GitInit(t) 21 _, err := git.ExtractRepoFromConfig(context.Background()) 22 require.EqualError(t, err, `no remote configured to list refs from`) 23 } 24 25 func TestRepoName(t *testing.T) { 26 testlib.Mktmp(t) 27 testlib.GitInit(t) 28 testlib.GitRemoteAdd(t, "git@github.com:goreleaser/goreleaser.git") 29 repo, err := git.ExtractRepoFromConfig(context.Background()) 30 require.NoError(t, err) 31 require.Equal(t, "goreleaser/goreleaser", repo.String()) 32 } 33 34 func TestRepoNameWithDifferentRemote(t *testing.T) { 35 ctx := context.Background() 36 testlib.Mktmp(t) 37 testlib.GitInit(t) 38 testlib.GitRemoteAddWithName(t, "upstream", "https://github.com/triarius/goreleaser.git") 39 _, err := git.Run(ctx, "pull", "upstream", "main") 40 require.NoError(t, err) 41 _, err = git.Run(ctx, "branch", "--set-upstream-to", "upstream/main") 42 require.NoError(t, err) 43 repo, err := git.ExtractRepoFromConfig(ctx) 44 require.NoError(t, err) 45 require.Equal(t, "goreleaser/goreleaser", repo.String()) 46 } 47 48 func TestExtractRepoFromURL(t *testing.T) { 49 // valid urls 50 for _, url := range []string{ 51 "git@github.com:goreleaser/goreleaser.git", 52 "git@custom:goreleaser/goreleaser.git", 53 "https://foo@github.com/triarius/goreleaser", 54 "https://github.com/triarius/goreleaser.git", 55 "https://something.with.port:8080/goreleaser/goreleaser.git", 56 "https://github.enterprise.com/goreleaser/goreleaser.git", 57 "https://gitlab-ci-token:SOME_TOKEN@gitlab.yourcompany.com/goreleaser/goreleaser.git", 58 } { 59 t.Run(url, func(t *testing.T) { 60 repo, err := git.ExtractRepoFromURL(url) 61 require.NoError(t, err) 62 require.Equal(t, "goreleaser/goreleaser", repo.String()) 63 require.NoError(t, repo.CheckSCM()) 64 require.Equal(t, url, repo.RawURL) 65 }) 66 } 67 68 // nested urls 69 for _, url := range []string{ 70 "git@custom:group/nested/goreleaser/goreleaser.git", 71 "https://gitlab.mycompany.com/group/nested/goreleaser/goreleaser.git", 72 "https://gitlab-ci-token:SOME_TOKEN@gitlab.yourcompany.com/group/nested/goreleaser/goreleaser.git", 73 } { 74 t.Run(url, func(t *testing.T) { 75 repo, err := git.ExtractRepoFromURL(url) 76 require.NoError(t, err) 77 require.Equal(t, "group/nested/goreleaser/goreleaser", repo.String()) 78 require.NoError(t, repo.CheckSCM()) 79 require.Equal(t, url, repo.RawURL) 80 }) 81 } 82 83 for _, url := range []string{ 84 "git@gist.github.com:someid.git", 85 "https://gist.github.com/someid.git", 86 } { 87 t.Run(url, func(t *testing.T) { 88 repo, err := git.ExtractRepoFromURL(url) 89 require.NoError(t, err) 90 require.Equal(t, "someid", repo.String()) 91 require.Error(t, repo.CheckSCM()) 92 require.Equal(t, url, repo.RawURL) 93 }) 94 } 95 96 // invalid urls 97 for _, url := range []string{ 98 "git@gist.github.com:", 99 "https://gist.github.com/", 100 } { 101 t.Run(url, func(t *testing.T) { 102 repo, err := git.ExtractRepoFromURL(url) 103 require.EqualError(t, err, "unsupported repository URL: "+url) 104 require.Equal(t, "", repo.String()) 105 require.Error(t, repo.CheckSCM()) 106 require.Equal(t, url, repo.RawURL) 107 }) 108 } 109 }