mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-12 10:55:20 +02:00
a0ad624b9a
confirm no longer done based on package status but now based on boolean indicator which is set during assembly step. Thus confirm can now be placed after release packages.
167 lines
4.6 KiB
Go
167 lines
4.6 KiB
Go
package cmd
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
abapbuild "github.com/SAP/jenkins-library/pkg/abap/build"
|
|
"github.com/SAP/jenkins-library/pkg/abaputils"
|
|
piperhttp "github.com/SAP/jenkins-library/pkg/http"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func testSetup(client piperhttp.Sender, buildID string) abapbuild.Build {
|
|
conn := new(abapbuild.Connector)
|
|
conn.Client = client
|
|
conn.DownloadClient = &abapbuild.DownloadClientMock{}
|
|
conn.Header = make(map[string][]string)
|
|
b := abapbuild.Build{
|
|
Connector: *conn,
|
|
BuildID: buildID,
|
|
}
|
|
return b
|
|
}
|
|
|
|
func TestCheckIfFailedAndPrintLogsWithError(t *testing.T) {
|
|
t.Run("checkIfFailedAndPrintLogs with failed build", func(t *testing.T) {
|
|
var repo abaputils.Repository
|
|
b := testSetup(&abapbuild.ClMock{}, "ABIFNLDCSQPOVMXK4DNPBDRW2M")
|
|
b.RunState = abapbuild.Failed
|
|
var buildsWithRepo []buildWithRepository
|
|
bWR := buildWithRepository{
|
|
build: b,
|
|
repo: repo,
|
|
}
|
|
buildsWithRepo = append(buildsWithRepo, bWR)
|
|
err := checkIfFailedAndPrintLogs(buildsWithRepo)
|
|
assert.Error(t, err)
|
|
})
|
|
|
|
t.Run("checkIfFailedAndPrintLogs", func(t *testing.T) {
|
|
var repo abaputils.Repository
|
|
b := testSetup(&abapbuild.ClMock{}, "ABIFNLDCSQPOVMXK4DNPBDRW2M")
|
|
b.RunState = abapbuild.Finished
|
|
var buildsWithRepo []buildWithRepository
|
|
bWR := buildWithRepository{
|
|
build: b,
|
|
repo: repo,
|
|
}
|
|
buildsWithRepo = append(buildsWithRepo, bWR)
|
|
err := checkIfFailedAndPrintLogs(buildsWithRepo)
|
|
assert.NoError(t, err)
|
|
})
|
|
}
|
|
|
|
func TestStartingInvalidInput(t *testing.T) {
|
|
t.Run("Run starting with Invalid Input", func(t *testing.T) {
|
|
client := &abapbuild.ClMock{
|
|
Token: "MyToken",
|
|
}
|
|
conn := new(abapbuild.Connector)
|
|
conn.Client = client
|
|
conn.Header = make(map[string][]string)
|
|
var repos []abaputils.Repository
|
|
repo := abaputils.Repository{
|
|
Name: "RepoA",
|
|
Status: "P",
|
|
}
|
|
repos = append(repos, repo)
|
|
builds, err := executeBuilds(repos, *conn, time.Duration(0*time.Second), time.Duration(1*time.Millisecond))
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 1, len(builds))
|
|
assert.Equal(t, abapbuild.Failed, builds[0].build.RunState)
|
|
})
|
|
}
|
|
|
|
func TestStep(t *testing.T) {
|
|
autils := &abaputils.AUtilsMock{
|
|
ReturnedConnectionDetailsHTTP: abaputils.ConnectionDetailsHTTP{
|
|
URL: `/sap/opu/odata/BUILD/CORE_SRV`,
|
|
},
|
|
}
|
|
client := abapbuild.GetBuildMockClient()
|
|
cpe := &abapEnvironmentAssemblePackagesCommonPipelineEnvironment{}
|
|
|
|
t.Run("abapEnvironmentAssemblePackages: nothing to do", func(t *testing.T) {
|
|
|
|
config := &abapEnvironmentAssemblePackagesOptions{
|
|
AddonDescriptor: cpeAbapAddonDescriptorPackageLocked,
|
|
MaxRuntimeInMinutes: 1,
|
|
PollIntervalsInMilliseconds: 1,
|
|
}
|
|
|
|
err := runAbapEnvironmentAssemblePackages(config, nil, autils, &client, cpe)
|
|
assert.NoError(t, err)
|
|
assert.Contains(t, cpe.abap.addonDescriptor, `"InBuildScope":false`)
|
|
})
|
|
t.Run("abapEnvironmentAssemblePackages: build", func(t *testing.T) {
|
|
|
|
config := &abapEnvironmentAssemblePackagesOptions{
|
|
AddonDescriptor: cpeAbapAddonDescriptorPackageReserved,
|
|
MaxRuntimeInMinutes: 1,
|
|
PollIntervalsInMilliseconds: 1,
|
|
}
|
|
|
|
err := runAbapEnvironmentAssemblePackages(config, nil, autils, &client, cpe)
|
|
assert.NoError(t, err)
|
|
assert.Contains(t, cpe.abap.addonDescriptor, `SAPK-001AAINITAPC1.SAR`)
|
|
assert.Contains(t, cpe.abap.addonDescriptor, `"InBuildScope":true`)
|
|
})
|
|
}
|
|
|
|
var cpeAbapAddonDescriptorPackageLocked = `{
|
|
"addonProduct":"/ITAPC1/I_CURRENCZPRODUCT",
|
|
"addonVersion":"1.0.0",
|
|
"addonVersionAAK":"0001",
|
|
"addonUniqueID":"myAddonId",
|
|
"customerID":"$ID",
|
|
"AddonSpsLevel":"0000",
|
|
"AddonPatchLevel":"0000",
|
|
"TargetVectorID":"",
|
|
"repositories":[
|
|
{ "name":"/ITAPC1/I_CURRENCZ",
|
|
"tag":"whatever",
|
|
"branch":"",
|
|
"commitID":"",
|
|
"version":"1.0.0",
|
|
"versionAAK":"0001",
|
|
"PackageName":"SAPK-002AAINITAPC1",
|
|
"PackageType":"AOI",
|
|
"SpLevel":"0000",
|
|
"PatchLevel":"0000",
|
|
"PredecessorCommitID":"",
|
|
"Status":"L",
|
|
"Namespace":"/ITAPC1/",
|
|
"SarXMLFilePath":".pipeline\\commonPipelineEnvironment\\abap\\SAPK-002AAINITAPC1.SAR"
|
|
}
|
|
]
|
|
}`
|
|
|
|
var cpeAbapAddonDescriptorPackageReserved = `{
|
|
"addonProduct":"/ITAPC1/I_CURRENCZPRODUCT",
|
|
"addonVersion":"1.0.0",
|
|
"addonVersionAAK":"0001",
|
|
"addonUniqueID":"myAddonId",
|
|
"customerID":"$ID",
|
|
"AddonSpsLevel":"0000",
|
|
"AddonPatchLevel":"0000",
|
|
"TargetVectorID":"",
|
|
"repositories":[
|
|
{ "name":"/ITAPC1/I_CURRENCZ",
|
|
"tag":"whatever",
|
|
"branch":"",
|
|
"commitID":"",
|
|
"version":"1.0.0",
|
|
"versionAAK":"0001",
|
|
"PackageName":"SAPK-002AAINITAPC1",
|
|
"PackageType":"AOI",
|
|
"SpLevel":"0000",
|
|
"PatchLevel":"0000",
|
|
"PredecessorCommitID":"",
|
|
"Status":"P",
|
|
"Namespace":"/ITAPC1/",
|
|
"SarXMLFilePath":""
|
|
}
|
|
]
|
|
}`
|