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  }