github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/versioning/maven_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package versioning 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/SAP/jenkins-library/pkg/maven" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 type mavenMockRunner struct { 15 evaluateErrorString string 16 executeErrorString string 17 stdout string 18 opts *maven.EvaluateOptions 19 execOpts *maven.ExecuteOptions 20 expression string 21 } 22 23 func (m *mavenMockRunner) Evaluate(opts *maven.EvaluateOptions, expression string, utils maven.Utils) (string, error) { 24 m.opts = opts 25 m.expression = expression 26 if len(m.evaluateErrorString) > 0 { 27 return "", fmt.Errorf(m.evaluateErrorString) 28 } 29 return m.stdout, nil 30 } 31 32 func (m *mavenMockRunner) Execute(opts *maven.ExecuteOptions, utils maven.Utils) (string, error) { 33 m.execOpts = opts 34 if len(m.executeErrorString) > 0 { 35 return "", fmt.Errorf(m.executeErrorString) 36 } 37 if opts.ReturnStdout { 38 return m.stdout, nil 39 } 40 return "", nil 41 } 42 43 func TestMavenGetVersion(t *testing.T) { 44 t.Run("success case", func(t *testing.T) { 45 runner := mavenMockRunner{ 46 stdout: "1.2.3", 47 } 48 mvn := &Maven{ 49 runner: &runner, 50 options: maven.EvaluateOptions{PomPath: "path/to/pom.xml", M2Path: "path/to/m2"}, 51 } 52 version, err := mvn.GetVersion() 53 assert.NoError(t, err) 54 assert.Equal(t, "1.2.3", version) 55 assert.Equal(t, "project.version", runner.expression) 56 assert.Equal(t, "path/to/pom.xml", runner.opts.PomPath) 57 assert.Equal(t, "path/to/m2", runner.opts.M2Path) 58 }) 59 60 t.Run("error case", func(t *testing.T) { 61 runner := mavenMockRunner{ 62 stdout: "1.2.3", 63 evaluateErrorString: "maven eval failed", 64 } 65 mvn := &Maven{ 66 runner: &runner, 67 } 68 version, err := mvn.GetVersion() 69 assert.EqualError(t, err, "Maven - getting version failed: maven eval failed") 70 assert.Equal(t, "", version) 71 }) 72 73 } 74 75 func TestMavenSetVersion(t *testing.T) { 76 t.Run("success case", func(t *testing.T) { 77 runner := mavenMockRunner{ 78 stdout: "testGroup", 79 } 80 mvn := &Maven{ 81 runner: &runner, 82 options: maven.EvaluateOptions{ 83 PomPath: "path/to/pom.xml", 84 ProjectSettingsFile: "project-settings.xml", 85 GlobalSettingsFile: "global-settings.xml", 86 M2Path: "m2/path"}, 87 } 88 expectedOptions := maven.ExecuteOptions{ 89 PomPath: "path/to/pom.xml", 90 Defines: []string{"-DnewVersion=1.2.4", "-DgroupId=testGroup", "-DartifactId=*", "-DoldVersion=*", "-DgenerateBackupPoms=false"}, 91 Goals: []string{"org.codehaus.mojo:versions-maven-plugin:2.7:set"}, 92 ProjectSettingsFile: "project-settings.xml", 93 GlobalSettingsFile: "global-settings.xml", 94 M2Path: "m2/path", 95 } 96 err := mvn.SetVersion("1.2.4") 97 assert.NoError(t, err) 98 assert.Equal(t, &expectedOptions, runner.execOpts) 99 }) 100 101 t.Run("evaluate error", func(t *testing.T) { 102 runner := mavenMockRunner{ 103 stdout: "testGroup", 104 evaluateErrorString: "maven eval failed", 105 } 106 mvn := &Maven{ 107 runner: &runner, 108 options: maven.EvaluateOptions{PomPath: "path/to/pom.xml"}, 109 } 110 err := mvn.SetVersion("1.2.4") 111 assert.EqualError(t, err, "Maven - getting groupId failed: maven eval failed") 112 }) 113 114 t.Run("execute error", func(t *testing.T) { 115 runner := mavenMockRunner{ 116 stdout: "testGroup", 117 executeErrorString: "maven exec failed", 118 } 119 mvn := &Maven{ 120 runner: &runner, 121 options: maven.EvaluateOptions{PomPath: "path/to/pom.xml"}, 122 } 123 err := mvn.SetVersion("1.2.4") 124 assert.EqualError(t, err, "Maven - setting version 1.2.4 failed: maven exec failed") 125 }) 126 }