github.com/SAP/jenkins-library@v1.362.0/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  }