github.com/jenkins-x/jx/v2@v2.1.155/pkg/config/project_config_test.go (about) 1 // +build unit 2 3 package config_test 4 5 import ( 6 "testing" 7 8 "github.com/jenkins-x/jx-logging/pkg/log" 9 "github.com/jenkins-x/jx/v2/pkg/config" 10 "github.com/jenkins-x/jx/v2/pkg/jenkinsfile" 11 "github.com/jenkins-x/jx/v2/pkg/tekton/syntax" 12 "github.com/jenkins-x/jx/v2/pkg/tests" 13 corev1 "k8s.io/api/core/v1" 14 "sigs.k8s.io/yaml" 15 16 "github.com/stretchr/testify/assert" 17 ) 18 19 var ( 20 testProjectConfigMaven = &config.ProjectConfig{ 21 BuildPack: "maven", 22 Env: []corev1.EnvVar{ 23 { 24 Name: "ORG", 25 Value: "myorg", 26 }, 27 { 28 Name: "APP_NAME", 29 Value: "thingy", 30 }, 31 }, 32 PipelineConfig: &jenkinsfile.PipelineConfig{ 33 Pipelines: jenkinsfile.Pipelines{ 34 PullRequest: &jenkinsfile.PipelineLifecycles{ 35 Build: &jenkinsfile.PipelineLifecycle{ 36 Steps: []*syntax.Step{ 37 { 38 Command: "mvn test", 39 }, 40 }, 41 }, 42 }, 43 Release: &jenkinsfile.PipelineLifecycles{ 44 Build: &jenkinsfile.PipelineLifecycle{ 45 Steps: []*syntax.Step{ 46 { 47 Command: "mvn test", 48 }, 49 { 50 Command: "mvn deploy", 51 }, 52 { 53 Command: "jx promote --all-auto", 54 }, 55 }, 56 }, 57 Pipeline: &syntax.ParsedPipeline{}, 58 }, 59 }, 60 Env: []corev1.EnvVar{ 61 { 62 Name: "PREVIEW_VERSION", 63 Value: "0.0.0-SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER", 64 }, 65 }, 66 }, 67 } 68 ) 69 70 func TestProjectConfigMarshal(t *testing.T) { 71 t.Parallel() 72 73 data, err := yaml.Marshal(testProjectConfigMaven) 74 assert.NoError(t, err) 75 76 if tests.IsDebugLog() { 77 text := string(data) 78 log.Logger().Infof("Generated YAML: %s", text) 79 } 80 81 copy := &config.ProjectConfig{} 82 83 err = yaml.Unmarshal(data, copy) 84 assert.NoError(t, err) 85 86 assert.Equal(t, 2, len(testProjectConfigMaven.Env), "len(testProjectConfigMaven.Env)") 87 assert.NotNil(t, testProjectConfigMaven.PipelineConfig, "testProjectConfigMaven.PipelineConfig") 88 assert.NotNil(t, testProjectConfigMaven.PipelineConfig.Pipelines.Release, "testProjectConfigMaven.PipelineConfig.Pipelines.Release") 89 assert.Equal(t, 1, len(testProjectConfigMaven.PipelineConfig.Env), "len(testProjectConfigMaven.PipelineConfig.Env)") 90 } 91 92 func TestGetPipeline(t *testing.T) { 93 releasePipeline, err := testProjectConfigMaven.GetPipeline(jenkinsfile.PipelineKindRelease) 94 assert.NoError(t, err) 95 assert.NotNil(t, releasePipeline) 96 97 pullRequestPipeline, err := testProjectConfigMaven.GetPipeline(jenkinsfile.PipelineKindPullRequest) 98 assert.Error(t, err) 99 assert.Equal(t, err.Error(), "no pipeline defined for kind pullrequest") 100 assert.Nil(t, pullRequestPipeline) 101 102 featurePipeline, err := testProjectConfigMaven.GetPipeline(jenkinsfile.PipelineKindFeature) 103 assert.Error(t, err) 104 assert.Equal(t, err.Error(), "no pipeline defined for kind feature") 105 assert.Nil(t, featurePipeline) 106 }