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 }