init
This commit is contained in:
256
pkg/provider/zexlab_test.go
Normal file
256
pkg/provider/zexlab_test.go
Normal file
@@ -0,0 +1,256 @@
|
||||
package provider
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/go-semantic-release/semantic-release/v2/pkg/provider"
|
||||
"github.com/go-semantic-release/semantic-release/v2/pkg/semrel"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNewZexlabRepository(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
|
||||
var repo *ZexlabRepository
|
||||
repo = &ZexlabRepository{}
|
||||
err := repo.Init(map[string]string{})
|
||||
assertions.EqualError(err, "zexlab token missing")
|
||||
|
||||
repo = &ZexlabRepository{}
|
||||
|
||||
err = repo.Init(map[string]string{
|
||||
"server_url": server.URL,
|
||||
"slug": fmt.Sprintf("%s/%s", zexlabUser, zexlabRepo),
|
||||
"token": "token",
|
||||
})
|
||||
assertions.NoError(err)
|
||||
}
|
||||
|
||||
func TestVersionAndNameReturn(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
repo := createTestZexlabRepo(t)
|
||||
assertions.Equal("dev", repo.Version())
|
||||
assertions.Equal("Zexlab", repo.Name())
|
||||
}
|
||||
|
||||
func TestZexlabGetInfo(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
repo := createTestZexlabRepo(t)
|
||||
|
||||
repoInfo, err := repo.GetInfo()
|
||||
|
||||
assertions.NoError(err)
|
||||
assertions.Equal(zexlabDefaultBranch, repoInfo.DefaultBranch)
|
||||
assertions.True(repoInfo.Private)
|
||||
assertions.Equal(zexlabUser, repoInfo.Owner)
|
||||
assertions.Equal(zexlabRepo, repoInfo.Repo)
|
||||
}
|
||||
|
||||
func TestZexlabGetCommits(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
repo := createTestZexlabRepo(t)
|
||||
|
||||
commits, err := repo.GetCommits("", "sa213445t6")
|
||||
|
||||
assertions.NoError(err)
|
||||
for i, c := range commits {
|
||||
assertions.Equal(c.SHA, zexlabCommits[i].SHA)
|
||||
assertions.Equal(c.RawMessage, zexlabCommits[i].RepoCommit.Message)
|
||||
assertions.Equal(c.Annotations["author_name"], zexlabCommits[i].Author.FullName)
|
||||
assertions.Equal(c.Annotations["author_email"], zexlabCommits[i].Author.Email)
|
||||
assertions.Equal(c.Annotations["committer_name"], zexlabCommits[i].Committer.FullName)
|
||||
assertions.Equal(c.Annotations["committer_email"], zexlabCommits[i].Committer.Email)
|
||||
assertions.Equal(c.Annotations["author_date"], zexlabCommits[i].RepoCommit.Author.Date)
|
||||
assertions.Equal(c.Annotations["committer_date"], zexlabCommits[i].RepoCommit.Committer.Date)
|
||||
}
|
||||
}
|
||||
|
||||
func TestZexlabGetReleases(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
repo := createTestZexlabRepo(t)
|
||||
|
||||
testCases := []struct {
|
||||
vRange string
|
||||
re string
|
||||
expectedSHA string
|
||||
expectedVersion string
|
||||
}{
|
||||
{"", "", testSHA, "2020.4.19"},
|
||||
{"", "^v[0-9]*", testSHA, "2.0.0"},
|
||||
{"2-beta", "", testSHA, "2.1.0-beta"},
|
||||
{"3-beta", "", testSHA, "3.0.0-beta.2"},
|
||||
{"4-beta", "", testSHA, "4.0.0-beta"},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(fmt.Sprintf("VersionRange: %s, Regex: %s", tc.vRange, tc.re), func(t *testing.T) {
|
||||
releases, err := repo.GetReleases(tc.re)
|
||||
assertions.NoError(err)
|
||||
release, err := semrel.GetLatestReleaseFromReleases(releases, tc.vRange)
|
||||
require.NoError(t, err)
|
||||
assertions.Equal(tc.expectedSHA, release.SHA)
|
||||
assertions.Equal(tc.expectedVersion, release.Version)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestZexlabCreateRelease(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
repo := createTestZexlabRepo(t)
|
||||
|
||||
err := repo.CreateRelease(&provider.CreateReleaseConfig{
|
||||
NewVersion: "5.0.0",
|
||||
Prerelease: false,
|
||||
Branch: "",
|
||||
SHA: testSHA,
|
||||
})
|
||||
assertions.NoError(err)
|
||||
}
|
||||
|
||||
func TestZexlabCreateReleaseStripPrefix(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
repo := &ZexlabRepository{}
|
||||
|
||||
err := repo.Init(map[string]string{
|
||||
"server_url": server.URL,
|
||||
"slug": fmt.Sprintf("%s/%s", zexlabUser, zexlabRepo),
|
||||
"token": "token",
|
||||
"strip_v_tag_prefix": "true",
|
||||
})
|
||||
|
||||
assertions.NoError(err)
|
||||
|
||||
err = repo.CreateRelease(&provider.CreateReleaseConfig{
|
||||
NewVersion: "5.0.0",
|
||||
Prerelease: false,
|
||||
Branch: "",
|
||||
SHA: testSHA,
|
||||
})
|
||||
assertions.NoError(err)
|
||||
}
|
||||
|
||||
func TestZexlabInvalidTag(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
repo := &ZexlabRepository{}
|
||||
|
||||
err := repo.Init(map[string]string{
|
||||
"server_url": server.URL,
|
||||
"slug": fmt.Sprintf("%s/%s", zexlabUser, zexlabRepo),
|
||||
"token": "token",
|
||||
})
|
||||
|
||||
assertions.NoError(err)
|
||||
|
||||
err = repo.CreateRelease(&provider.CreateReleaseConfig{
|
||||
NewVersion: "1.0.1",
|
||||
Prerelease: false,
|
||||
Branch: "",
|
||||
SHA: testSHA,
|
||||
})
|
||||
assertions.Errorf(err, "invalid tag name")
|
||||
}
|
||||
|
||||
func TestZexlabEnvironmentVars(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
envVarName string
|
||||
envVarValue string
|
||||
}{
|
||||
{
|
||||
"Gitea Environment Var Slug",
|
||||
"GITEA_REPOSITORY",
|
||||
fmt.Sprintf("%s/%s",
|
||||
zexlabUser,
|
||||
zexlabRepo),
|
||||
},
|
||||
{
|
||||
"GitHub Actions Environment Var Slug",
|
||||
"GITHUB_REPOSITORY",
|
||||
fmt.Sprintf("%s/%s",
|
||||
zexlabUser,
|
||||
zexlabRepo),
|
||||
},
|
||||
{
|
||||
"WoodpeckerCI Environment Var Slug",
|
||||
"CI_REPO_NAME",
|
||||
fmt.Sprintf("%s/%s",
|
||||
zexlabUser,
|
||||
zexlabRepo),
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
_ = os.Setenv(tc.envVarName, tc.envVarValue)
|
||||
|
||||
repo := &ZexlabRepository{}
|
||||
err := repo.Init(map[string]string{
|
||||
"server_url": server.URL,
|
||||
"token": "token",
|
||||
})
|
||||
|
||||
require.NoError(t, err)
|
||||
_ = os.Unsetenv(tc.envVarName)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestZexlabTokenNotSet(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
|
||||
repo := &ZexlabRepository{}
|
||||
err := repo.Init(map[string]string{
|
||||
"server_url": server.URL,
|
||||
})
|
||||
|
||||
assertions.Errorf(err, "zexlab token missing")
|
||||
}
|
||||
|
||||
func TestZexlabNonBooleanStripPrefix(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
assertions := require.New(t)
|
||||
|
||||
repo := &ZexlabRepository{}
|
||||
err := repo.Init(map[string]string{
|
||||
"server_url": server.URL,
|
||||
"slug": fmt.Sprintf("%s/%s", zexlabUser, zexlabRepo),
|
||||
"strip_v_tag_prefix": "something",
|
||||
"token": "token",
|
||||
})
|
||||
|
||||
assertions.Errorf(err, "failed to set property strip_v_tag_prefix: strconv.ParseBool: parsing \"something\": invalid syntax")
|
||||
}
|
||||
Reference in New Issue
Block a user