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