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