github.com/SAP/jenkins-library@v1.362.0/cmd/mavenBuild_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package cmd
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestMavenBuild(t *testing.T) {
    13  
    14  	cpe := mavenBuildCommonPipelineEnvironment{}
    15  
    16  	t.Run("mavenBuild should install the artifact", func(t *testing.T) {
    17  		mockedUtils := newMavenMockUtils()
    18  
    19  		config := mavenBuildOptions{}
    20  
    21  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
    22  
    23  		assert.Nil(t, err)
    24  		assert.Equal(t, mockedUtils.Calls[0].Exec, "mvn")
    25  		assert.Contains(t, mockedUtils.Calls[0].Params, "install")
    26  	})
    27  
    28  	t.Run("mavenBuild should skip integration tests", func(t *testing.T) {
    29  		mockedUtils := newMavenMockUtils()
    30  		mockedUtils.AddFile("integration-tests/pom.xml", []byte{})
    31  
    32  		config := mavenBuildOptions{}
    33  
    34  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
    35  
    36  		assert.Nil(t, err)
    37  		assert.Equal(t, mockedUtils.Calls[0].Exec, "mvn")
    38  		assert.Contains(t, mockedUtils.Calls[0].Params, "-pl", "!integration-tests")
    39  	})
    40  
    41  	t.Run("mavenBuild should flatten", func(t *testing.T) {
    42  		mockedUtils := newMavenMockUtils()
    43  
    44  		config := mavenBuildOptions{Flatten: true}
    45  
    46  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
    47  
    48  		assert.Nil(t, err)
    49  		assert.Contains(t, mockedUtils.Calls[0].Params, "flatten:flatten")
    50  		assert.Contains(t, mockedUtils.Calls[0].Params, "-Dflatten.mode=resolveCiFriendliesOnly")
    51  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DupdatePomFile=true")
    52  	})
    53  
    54  	t.Run("mavenBuild should run only verify", func(t *testing.T) {
    55  		mockedUtils := newMavenMockUtils()
    56  
    57  		config := mavenBuildOptions{Verify: true}
    58  
    59  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
    60  
    61  		assert.Nil(t, err)
    62  		assert.Contains(t, mockedUtils.Calls[0].Params, "verify")
    63  		assert.NotContains(t, mockedUtils.Calls[0].Params, "install")
    64  	})
    65  
    66  	t.Run("mavenBuild should createBOM", func(t *testing.T) {
    67  		mockedUtils := newMavenMockUtils()
    68  
    69  		config := mavenBuildOptions{CreateBOM: true}
    70  
    71  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
    72  
    73  		assert.Nil(t, err)
    74  		assert.Contains(t, mockedUtils.Calls[0].Params, "org.cyclonedx:cyclonedx-maven-plugin:2.7.8:makeAggregateBom")
    75  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DschemaVersion=1.4")
    76  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DincludeBomSerialNumber=true")
    77  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DincludeCompileScope=true")
    78  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DincludeProvidedScope=true")
    79  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DincludeRuntimeScope=true")
    80  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DincludeSystemScope=true")
    81  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DincludeTestScope=false")
    82  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DincludeLicenseText=false")
    83  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DoutputFormat=xml")
    84  		assert.Contains(t, mockedUtils.Calls[0].Params, "-DoutputName=bom-maven")
    85  	})
    86  
    87  	t.Run("mavenBuild include install and deploy when publish is true", func(t *testing.T) {
    88  		mockedUtils := newMavenMockUtils()
    89  
    90  		config := mavenBuildOptions{Publish: true, Verify: false}
    91  
    92  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
    93  
    94  		assert.Nil(t, err)
    95  		assert.Contains(t, mockedUtils.Calls[0].Params, "install")
    96  		assert.NotContains(t, mockedUtils.Calls[0].Params, "verify")
    97  		assert.Contains(t, mockedUtils.Calls[1].Params, "deploy")
    98  
    99  	})
   100  
   101  	t.Run("mavenBuild with deploy must skip build, install and test", func(t *testing.T) {
   102  		mockedUtils := newMavenMockUtils()
   103  
   104  		config := mavenBuildOptions{Publish: true, Verify: false, DeployFlags: []string{"-Dmaven.main.skip=true", "-Dmaven.test.skip=true", "-Dmaven.install.skip=true"}}
   105  
   106  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
   107  
   108  		assert.Nil(t, err)
   109  		assert.Contains(t, mockedUtils.Calls[1].Params, "-Dmaven.main.skip=true")
   110  		assert.Contains(t, mockedUtils.Calls[1].Params, "-Dmaven.test.skip=true")
   111  		assert.Contains(t, mockedUtils.Calls[1].Params, "-Dmaven.install.skip=true")
   112  
   113  	})
   114  
   115  	t.Run("mavenBuild with deploy must include alt repo id and url when passed as parameter", func(t *testing.T) {
   116  		mockedUtils := newMavenMockUtils()
   117  
   118  		config := mavenBuildOptions{Publish: true, Verify: false, AltDeploymentRepositoryID: "ID", AltDeploymentRepositoryURL: "http://sampleRepo.com"}
   119  
   120  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
   121  
   122  		assert.Nil(t, err)
   123  		assert.Contains(t, mockedUtils.Calls[1].Params, "-DaltDeploymentRepository=ID::default::http://sampleRepo.com")
   124  	})
   125  
   126  	t.Run("mavenBuild accepts profiles", func(t *testing.T) {
   127  		mockedUtils := newMavenMockUtils()
   128  
   129  		config := mavenBuildOptions{Profiles: []string{"profile1", "profile2"}}
   130  
   131  		err := runMavenBuild(&config, nil, &mockedUtils, &cpe)
   132  
   133  		assert.Nil(t, err)
   134  		assert.Contains(t, mockedUtils.Calls[0].Params, "--activate-profiles")
   135  		assert.Contains(t, mockedUtils.Calls[0].Params, "profile1,profile2")
   136  	})
   137  
   138  }