提交 f50f30e6 编写于 作者: LinuxSuRen's avatar LinuxSuRen

Refactory pr discover with Bitbucket, avoid using number to compare

Signed-off-by: LinuxSuRen's avatarrick <rick@jenkins-zh.cn>
上级 e4782b37
......@@ -35,16 +35,13 @@ func AppendBitbucketServerSourceToEtree(source *etree.Element, gitSource *devops
forkTrait := traits.CreateElement("com.cloudbees.jenkins.plugins.bitbucket.ForkPullRequestDiscoveryTrait")
forkTrait.CreateElement("strategyId").SetText(strconv.Itoa(gitSource.DiscoverPRFromForks.Strategy))
trustClass := "com.cloudbees.jenkins.plugins.bitbucket.ForkPullRequestDiscoveryTrait$"
switch gitSource.DiscoverPRFromForks.Trust {
case 1:
trustClass += "TrustEveryone"
case 2:
trustClass += "TrustTeamForks"
case 3:
trustClass += "TrustNobody"
default:
trustClass += "TrustEveryone"
if prTrust := PRDiscoverTrust(gitSource.DiscoverPRFromForks.Trust); prTrust.IsValid() {
trustClass += prTrust.String()
} else {
klog.Warningf("invalid Bitbucket discover PR trust value: %d", prTrust.Value())
}
forkTrait.CreateElement("trust").CreateAttr("class", trustClass)
}
if gitSource.DiscoverTags {
......@@ -111,23 +108,16 @@ func GetBitbucketServerSourceFromEtree(source *etree.Element) *devopsv1alpha3.Bi
strategyId, _ := strconv.Atoi(forkPRDiscoverTrait.SelectElement("strategyId").Text())
trustClass := forkPRDiscoverTrait.SelectElement("trust").SelectAttr("class").Value
trust := strings.Split(trustClass, "$")
switch trust[1] {
case "TrustEveryone":
s.DiscoverPRFromForks = &devopsv1alpha3.DiscoverPRFromForks{
Strategy: strategyId,
Trust: 1,
}
case "TrustTeamForks":
s.DiscoverPRFromForks = &devopsv1alpha3.DiscoverPRFromForks{
Strategy: strategyId,
Trust: 2,
}
case "TrustNobody":
if prTrust := BitbucketPRDiscoverTrust(1).ParseFromString(trust[1]); prTrust.IsValid() {
s.DiscoverPRFromForks = &devopsv1alpha3.DiscoverPRFromForks{
Strategy: strategyId,
Trust: 3,
Trust: prTrust.Value(),
}
} else {
klog.Warningf("invalid Bitbucket discover PR trust value: %s", trust[1])
}
if cloneTrait := traits.SelectElement(
"jenkins.plugins.git.traits.CloneOptionTrait"); cloneTrait != nil {
if cloneExtension := cloneTrait.SelectElement(
......
......@@ -10,12 +10,6 @@ const (
PRDiscoverUnknown PRDiscoverTrust = -1
)
type GitHubPRDiscoverTrust int
const (
GitHubPRDiscoverTrustContributors GitHubPRDiscoverTrust = 1
)
func (p PRDiscoverTrust) Value() int {
return int(p)
}
......@@ -49,6 +43,13 @@ func (p PRDiscoverTrust) ParseFromString(prTrust string) PRDiscoverTrust {
}
}
// GitHub
type GitHubPRDiscoverTrust int
const (
GitHubPRDiscoverTrustContributors GitHubPRDiscoverTrust = 1
)
func (p GitHubPRDiscoverTrust) Value() int {
return int(p)
}
......@@ -78,3 +79,46 @@ func (p GitHubPRDiscoverTrust) ParseFromString(prTrust string) GitHubPRDiscoverT
func (p GitHubPRDiscoverTrust) IsValid() bool {
return PRDiscoverTrust(p).IsValid()
}
// Bitbucket
type BitbucketPRDiscoverTrust int
const (
BitbucketPRDiscoverTrustEveryone BitbucketPRDiscoverTrust = 1
BitbucketPRDiscoverTrustTeamForks BitbucketPRDiscoverTrust = 2
BitbucketPRDiscoverTrustNobody BitbucketPRDiscoverTrust = 3
)
func (p BitbucketPRDiscoverTrust) Value() int {
return int(p)
}
func (p BitbucketPRDiscoverTrust) IsValid() bool {
return p.String() != ""
}
func (p BitbucketPRDiscoverTrust) String() string {
switch p {
default:
fallthrough
case BitbucketPRDiscoverTrustEveryone:
return "TrustEveryone"
case BitbucketPRDiscoverTrustTeamForks:
return "TrustTeamForks"
case BitbucketPRDiscoverTrustNobody:
return "TrustNobody"
}
}
func (p BitbucketPRDiscoverTrust) ParseFromString(prTrust string) BitbucketPRDiscoverTrust {
switch prTrust {
default:
fallthrough
case "TrustEveryone":
return BitbucketPRDiscoverTrustEveryone
case "TrustTeamForks":
return BitbucketPRDiscoverTrustTeamForks
case "TrustNobody":
return BitbucketPRDiscoverTrustNobody
}
}
......@@ -19,10 +19,23 @@ func TestPRDiscoverTrust(t *testing.T) {
assert.Equal(t, PRDiscoverTrust(1).ParseFromString("TrustNobody"), PRDiscoverTrustNobody)
assert.Equal(t, PRDiscoverTrust(1).ParseFromString("fake").IsValid(), false)
// GitHub
assert.Equal(t, GitHubPRDiscoverTrust(1).String(), "TrustContributors")
assert.Equal(t, GitHubPRDiscoverTrust(2).String(), PRDiscoverTrust(2).String())
assert.Equal(t, GitHubPRDiscoverTrust(1).Value(), 1)
assert.Equal(t, GitHubPRDiscoverTrust(1).ParseFromString("TrustContributors"), GitHubPRDiscoverTrustContributors)
assert.Equal(t, GitHubPRDiscoverTrust(1).ParseFromString("TrustEveryone").String(), "TrustEveryone")
assert.Equal(t, GitHubPRDiscoverTrust(1).ParseFromString("fake").IsValid(), false)
// Bithucket
assert.Equal(t, BitbucketPRDiscoverTrust(1).String(), "TrustEveryone")
assert.Equal(t, BitbucketPRDiscoverTrust(2).String(), "TrustTeamForks")
assert.Equal(t, BitbucketPRDiscoverTrust(3).String(), "TrustNobody")
assert.Equal(t, BitbucketPRDiscoverTrust(3).Value(), 3)
assert.Equal(t, BitbucketPRDiscoverTrust(-1).String(), "TrustEveryone")
assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("TrustEveryone"), BitbucketPRDiscoverTrustEveryone)
assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("TrustTeamForks"), BitbucketPRDiscoverTrustTeamForks)
assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("TrustNobody"), BitbucketPRDiscoverTrustNobody)
assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("fake"), BitbucketPRDiscoverTrustEveryone)
assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("TrustNobody").IsValid(), true)
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册