Skip to content

Commit

Permalink
fix client tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jgramoll committed Jul 17, 2019
1 parent cf1a857 commit f5d9e25
Show file tree
Hide file tree
Showing 37 changed files with 267 additions and 137 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,3 +134,4 @@ resource "jenkins_job_gerrit_branch" "main" {
1. import resources
1. use job name as part of id + guid
1. fix reads to set state from remote
1. use map for unmarshal class
18 changes: 18 additions & 0 deletions client/compare_type.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package client

import (
"encoding/xml"
"errors"
"fmt"
)

type CompareType int
Expand All @@ -18,3 +20,19 @@ func (t CompareType) String() string {
func (t CompareType) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
return e.EncodeElement(t.String(), start)
}

func (t *CompareType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
var s string
if err := d.DecodeElement(&s, &start); err != nil {
return err
}
switch s {
default:
return errors.New(fmt.Sprintf("Unknown Compare Type %s", s))
case "PLAIN":
*t = CompareTypePlain
case "REG_EXP":
*t = CompareTypeRegExp
}
return nil
}
14 changes: 5 additions & 9 deletions client/git_scm.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,17 @@ type GitSCM struct {

DoGenerateSubmoduleConfigurations bool `xml:"doGenerateSubmoduleConfigurations"`
// submoduleCfg
// extensions
Extensions *GitScmExtensions `xml:"extensions"`
}

func NewGitScm() *GitSCM {
return &GitSCM{
Class: "hudson.plugins.git.GitSCM",
Branches: NewGitScmBranches(),
UserRemoteConfigs: NewGitUserRemoteConfigs(),
}
}
Branches: NewGitScmBranches(),

func (scm *GitSCM) AppendUserRemoteConfig(config *GitUserRemoteConfig) *GitUserRemoteConfigs {
return scm.UserRemoteConfigs.Append(config)
}
DoGenerateSubmoduleConfigurations: false,

func (scm *GitSCM) AppendBranch(branch *GitScmBranchSpec) *GitScmBranches {
return scm.Branches.Append(branch)
Extensions: NewGitScmExtensions(),
}
}
12 changes: 12 additions & 0 deletions client/git_scm_clean_before_checkout_extension.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package client

import "encoding/xml"

type GitScmCleanBeforeCheckoutExtension struct {
XMLName xml.Name `xml:"hudson.plugins.git.extensions.impl.CleanBeforeCheckout"`
Id string `xml:"id,attr"`
}

func NewGitScmCleanBeforeCheckoutExtension() *GitScmCleanBeforeCheckoutExtension {
return &GitScmCleanBeforeCheckoutExtension{}
}
3 changes: 3 additions & 0 deletions client/git_scm_extension.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package client

type GitScmExtension interface{}
23 changes: 23 additions & 0 deletions client/git_scm_extensions.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package client

type GitScmExtensions struct {
Items *[]GitScmExtension
}

func NewGitScmExtensions() *GitScmExtensions {
return &GitScmExtensions{
Items: &[]GitScmExtension{},
}
}

func (extensions *GitScmExtensions) Append(extension GitScmExtension) *GitScmExtensions {
var newExtensionItems []GitScmExtension
if extensions.Items != nil {
newExtensionItems = append(*extensions.Items, extension)
} else {
newExtensionItems = append(newExtensionItems, extension)
}
newExtensions := NewGitScmExtensions()
newExtensions.Items = &newExtensionItems
return newExtensions
}
22 changes: 2 additions & 20 deletions client/git_user_remote_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,6 @@ type GitUserRemoteConfig struct {
CredentialsId string `xml:"credentialsId"`
}

type GitUserRemoteConfigs struct {
Items *[]*GitUserRemoteConfig `xml:"hudson.plugins.git.UserRemoteConfig"`
}

func NewGitUserRemoteConfigs() *GitUserRemoteConfigs {
return &GitUserRemoteConfigs{
Items: &[]*GitUserRemoteConfig{},
}
}

func (configs *GitUserRemoteConfigs) Append(config *GitUserRemoteConfig) *GitUserRemoteConfigs {
var newConfigItems []*GitUserRemoteConfig
if configs.Items != nil {
newConfigItems = append(*configs.Items, config)
} else {
newConfigItems = append(newConfigItems, config)
}
newConfigs := NewGitUserRemoteConfigs()
newConfigs.Items = &newConfigItems
return newConfigs
func NewGitUserRemoteConfig() *GitUserRemoteConfig {
return &GitUserRemoteConfig{}
}
23 changes: 23 additions & 0 deletions client/git_user_remote_configs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package client

type GitUserRemoteConfigs struct {
Items *[]*GitUserRemoteConfig `xml:"hudson.plugins.git.UserRemoteConfig"`
}

func NewGitUserRemoteConfigs() *GitUserRemoteConfigs {
return &GitUserRemoteConfigs{
Items: &[]*GitUserRemoteConfig{},
}
}

func (configs *GitUserRemoteConfigs) Append(config *GitUserRemoteConfig) *GitUserRemoteConfigs {
var newConfigItems []*GitUserRemoteConfig
if configs.Items != nil {
newConfigItems = append(*configs.Items, config)
} else {
newConfigItems = append(newConfigItems, config)
}
newConfigs := NewGitUserRemoteConfigs()
newConfigs.Items = &newConfigItems
return newConfigs
}
4 changes: 2 additions & 2 deletions client/job.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func (job *Job) NameOnly() string {
}

func newJobFromConfigAndDetails(config *jobConfig, details *jobDetails) *Job {
job := Job{}
job := NewJob()

if details != nil {
job.Name = details.FullName
Expand All @@ -54,7 +54,7 @@ func newJobFromConfigAndDetails(config *jobConfig, details *jobDetails) *Job {
}
}

return &job
return job
}

func (job *Job) GetProperty(propertyId string) (JobProperty, error) {
Expand Down
23 changes: 20 additions & 3 deletions client/job_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,20 @@ func TestJobConfigSerialize(t *testing.T) {
definition.SCM = NewGitScm()
definition.SCM.ConfigVersion = "my-version"

remoteConfig := NewGitUserRemoteConfig()
remoteConfig.Refspec = "refspec"
remoteConfig.Url = "url.to.here"
remoteConfig.CredentialsId = "creds"
definition.SCM.UserRemoteConfigs = definition.SCM.UserRemoteConfigs.Append(remoteConfig)

scmExtension := NewGitScmCleanBeforeCheckoutExtension()
scmExtension.Id = "extension-id"
definition.SCM.Extensions = definition.SCM.Extensions.Append(scmExtension)

branchSpec := NewGitScmBranchSpec()
branchSpec.Name = "branchspec"
definition.Id = "definition-id"
definition.SCM.Branches = definition.SCM.Branches.Append(branchSpec)
//userRemoteConfigs
//extensions
job.Definition = definition

gerritBranch := NewJobGerritTriggerBranch()
Expand Down Expand Up @@ -118,13 +126,22 @@ func TestJobConfigSerialize(t *testing.T) {
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" id="definition-id">
<scm class="hudson.plugins.git.GitSCM">
<configVersion>my-version</configVersion>
<userRemoteConfigs></userRemoteConfigs>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<refspec>refspec</refspec>
<url>url.to.here</url>
<credentialsId>creds</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec id="">
<name>branchspec</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<extensions>
<hudson.plugins.git.extensions.impl.CleanBeforeCheckout id="extension-id"></hudson.plugins.git.extensions.impl.CleanBeforeCheckout>
</extensions>
</scm>
<scriptPath></scriptPath>
<lightweight>false</lightweight>
Expand Down
4 changes: 0 additions & 4 deletions client/job_definition.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,9 @@ package client

import (
"encoding/xml"
"errors"
"log"
)

// ErrDefinitionMissingClass
var ErrDefinitionMissingClass = errors.New("job definition did not contain class")

type JobDefinitionXml struct {
Item JobDefinition
}
Expand Down
52 changes: 26 additions & 26 deletions client/job_gerrit_trigger.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,40 +11,40 @@ type JobGerritTrigger struct {
SkipVote *JobGerritTriggerSkipVote `xml:"skipVote"`
SilentMode bool `xml:"silentMode"`
// notificationLevel
SilentStartMode bool `xml:"silentStartMode"`
EscapeQuotes bool `xml:"escapeQuotes"`
SilentStartMode bool `xml:"silentStartMode"`
EscapeQuotes bool `xml:"escapeQuotes"`
NameAndEmailParameterMode ParameterMode `xml:"nameAndEmailParameterMode"`
// dependencyJobsNames
CommitMessageParameterMode ParameterMode `xml:"commitMessageParameterMode"`
ChangeSubjectParameterMode ParameterMode `xml:"changeSubjectParameterMode"`
CommentTextParameterMode ParameterMode `xml:"commentTextParameterMode"`
// <buildStartMessage/>
// <buildFailureMessage/>
// <buildSuccessfulMessage/>
// <buildUnstableMessage/>
// <buildNotBuiltMessage/>
// <buildUnsuccessfulFilepath/>
// <customUrl/>
ServerName string `xml:"serverName"`
TriggerOnEvents *JobGerritTriggerOnEvents `xml:"triggerOnEvents"`
DynamicTriggerConfiguration bool `xml:"dynamicTriggerConfiguration"`
// <triggerConfigURL/>
// <triggerInformationAction/>
CommentTextParameterMode ParameterMode `xml:"commentTextParameterMode"`
// buildStartMessage
// buildFailureMessage
// buildSuccessfulMessage
// buildUnstableMessage
// buildNotBuiltMessage
// buildUnsuccessfulFilepath
// customUrl
ServerName string `xml:"serverName"`
TriggerOnEvents *JobGerritTriggerOnEvents `xml:"triggerOnEvents"`
DynamicTriggerConfiguration bool `xml:"dynamicTriggerConfiguration"`
// triggerConfigURL
// triggerInformationAction
}

func NewJobGerritTrigger() *JobGerritTrigger {
return &JobGerritTrigger{
Projects: NewJobGerritTriggerProjects(),
SkipVote: NewJobGerritTriggerSkipVote(),
SilentMode:false,
SilentStartMode: false,
EscapeQuotes: true,
NameAndEmailParameterMode: ParameterModePlain,
CommitMessageParameterMode: ParameterModeBase64,
ChangeSubjectParameterMode: ParameterModePlain,
CommentTextParameterMode: ParameterModeBase64,
ServerName: "__ANY__",
TriggerOnEvents: &JobGerritTriggerOnEvents{},
Projects: NewJobGerritTriggerProjects(),
SkipVote: NewJobGerritTriggerSkipVote(),
SilentMode: false,
SilentStartMode: false,
EscapeQuotes: true,
NameAndEmailParameterMode: ParameterModePlain,
CommitMessageParameterMode: ParameterModeBase64,
ChangeSubjectParameterMode: ParameterModePlain,
CommentTextParameterMode: ParameterModeBase64,
ServerName: "__ANY__",
TriggerOnEvents: &JobGerritTriggerOnEvents{},
DynamicTriggerConfiguration: false,
}
}
2 changes: 1 addition & 1 deletion client/job_gerrit_trigger_branch.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package client

type JobGerritTriggerBranch struct {
CompareType CompareType `xml:"compareType"`
Pattern string `xml:"pattern"`
Pattern string `xml:"pattern"`
}

func NewJobGerritTriggerBranch() *JobGerritTriggerBranch {
Expand Down
2 changes: 1 addition & 1 deletion client/job_gerrit_trigger_on_event.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
package client

type JobGerritTriggerOnEvent interface {}
type JobGerritTriggerOnEvent interface{}
2 changes: 1 addition & 1 deletion client/job_gerrit_trigger_project.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import "encoding/xml"

type JobGerritTriggerProject struct {
XMLName xml.Name `xml:"com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject"`
CompareType CompareType `xml:"compareType"`
CompareType CompareType `xml:"compareType"`
Pattern string `xml:"pattern"`
Branches *JobGerritTriggerBranches `xml:"branches"`

Expand Down
2 changes: 1 addition & 1 deletion client/job_gerrit_trigger_projects.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package client

type JobGerritTriggerProjects struct {
Items *[]*JobGerritTriggerProject
Items *[]*JobGerritTriggerProject `xml:",any"`
}

func NewJobGerritTriggerProjects() *JobGerritTriggerProjects {
Expand Down
6 changes: 3 additions & 3 deletions client/job_gerrit_trigger_skip_vote.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ type JobGerritTriggerSkipVote struct {
func NewJobGerritTriggerSkipVote() *JobGerritTriggerSkipVote {
return &JobGerritTriggerSkipVote{
OnSuccessful: false,
OnFailed: false,
OnUnstable: false,
OnNotBuilt: false,
OnFailed: false,
OnUnstable: false,
OnNotBuilt: false,
}
}
12 changes: 12 additions & 0 deletions client/job_parameter_definition_property.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package client

// Job Property
type JobParameterDefinitionProperty interface{}

type JobParameterDefinitionPropertyChoice struct {
// DefaultParameterValue map[string]string `xml:"defaultParameterValue"`
Description string `xml:"description"`
Name string `xml:"name"`
// Type string `xml:"type"`
Choices *[]string `xml:"choices"`
}
3 changes: 1 addition & 2 deletions client/job_pipeline_build_discarder_property_strategy.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
package client

type JobPipelineBuildDiscarderPropertyStrategy interface {
}
type JobPipelineBuildDiscarderPropertyStrategy interface{}
13 changes: 7 additions & 6 deletions client/job_properties.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,23 @@ func (properties *JobProperties) UnmarshalXML(d *xml.Decoder, start xml.StartEle
properties.Items = &[]JobProperty{}
for tok, err = d.Token(); err == nil; tok, err = d.Token() {
if elem, ok := tok.(xml.StartElement); ok {
var property JobProperty
// TODO use map
switch elem.Name.Local {
default:
continue
case "org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty":
property = &JobPipelineTriggersProperty{}
property := NewJobPipelineTriggersProperty()
err := d.DecodeElement(property, &elem)
if err != nil {
return err
}
*properties.Items = append(*(*properties).Items, property)
}
d.DecodeElement(property, &elem)
*properties.Items = append(*(*properties).Items, property)
}
if end, ok := tok.(xml.EndElement); ok {
if end.Name.Local == "properties" {
break
}
}
}

return err
}
Loading

0 comments on commit f5d9e25

Please sign in to comment.