You've already forked sap-jenkins-library
mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-07-15 01:34:38 +02:00
fix(golangBuild) properly handle multi main package builds
Co-authored-by: Pavel Busko <pavel.busko@sap.com>
This commit is contained in:
committed by
Pavel Busko
parent
2ed1ed76fc
commit
74b6b09609
@ -72,7 +72,7 @@ func newGolangBuildTestsUtils() *golangBuildMockUtils {
|
||||
utils := golangBuildMockUtils{
|
||||
ExecMockRunner: &mock.ExecMockRunner{},
|
||||
FilesMock: &mock.FilesMock{},
|
||||
//clientOptions: []piperhttp.ClientOptions{},
|
||||
// clientOptions: []piperhttp.ClientOptions{},
|
||||
fileUploads: map[string]string{},
|
||||
}
|
||||
return &utils
|
||||
@ -632,14 +632,15 @@ func TestRunGolangBuildPerArchitecture(t *testing.T) {
|
||||
ldflags := "-X test=test"
|
||||
architecture, _ := multiarch.ParsePlatformString("linux,amd64")
|
||||
|
||||
binaryName, err := runGolangBuildPerArchitecture(&config, utils, ldflags, architecture)
|
||||
binaryNames, err := runGolangBuildPerArchitecture(&config, utils, ldflags, architecture)
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, utils.Calls[0].Params, "-o")
|
||||
assert.Contains(t, utils.Calls[0].Params, "testBin-linux.amd64")
|
||||
assert.Contains(t, utils.Calls[0].Params, "./test/..")
|
||||
assert.Contains(t, utils.Calls[0].Params, "-ldflags")
|
||||
assert.Contains(t, utils.Calls[0].Params, "-X test=test")
|
||||
assert.Equal(t, "testBin-linux.amd64", binaryName)
|
||||
assert.Len(t, binaryNames, 1)
|
||||
assert.Contains(t, binaryNames, "testBin-linux.amd64")
|
||||
})
|
||||
|
||||
t.Run("success - windows", func(t *testing.T) {
|
||||
@ -649,11 +650,80 @@ func TestRunGolangBuildPerArchitecture(t *testing.T) {
|
||||
ldflags := ""
|
||||
architecture, _ := multiarch.ParsePlatformString("windows,amd64")
|
||||
|
||||
binaryName, err := runGolangBuildPerArchitecture(&config, utils, ldflags, architecture)
|
||||
binaryNames, err := runGolangBuildPerArchitecture(&config, utils, ldflags, architecture)
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, utils.Calls[0].Params, "-o")
|
||||
assert.Contains(t, utils.Calls[0].Params, "testBin-windows.amd64.exe")
|
||||
assert.Equal(t, "testBin-windows.amd64.exe", binaryName)
|
||||
assert.Len(t, binaryNames, 1)
|
||||
assert.Contains(t, binaryNames, "testBin-windows.amd64.exe")
|
||||
})
|
||||
|
||||
t.Run("success - multiple main packages (linux)", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
config := golangBuildOptions{Output: "test/", Packages: []string{"package/foo", "package/bar"}}
|
||||
utils := newGolangBuildTestsUtils()
|
||||
utils.StdoutReturn = map[string]string{
|
||||
"go list -f {{ .Name }} package/foo": "main",
|
||||
"go list -f {{ .Name }} package/bar": "main",
|
||||
}
|
||||
ldflags := ""
|
||||
architecture, _ := multiarch.ParsePlatformString("linux,amd64")
|
||||
|
||||
binaryNames, err := runGolangBuildPerArchitecture(&config, utils, ldflags, architecture)
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, utils.Calls[0].Params, "list")
|
||||
assert.Contains(t, utils.Calls[0].Params, "package/foo")
|
||||
assert.Contains(t, utils.Calls[1].Params, "list")
|
||||
assert.Contains(t, utils.Calls[1].Params, "package/bar")
|
||||
|
||||
assert.Len(t, binaryNames, 2)
|
||||
assert.Contains(t, binaryNames, "test-linux-amd64/foo")
|
||||
assert.Contains(t, binaryNames, "test-linux-amd64/bar")
|
||||
})
|
||||
|
||||
t.Run("success - multiple main packages (windows)", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
config := golangBuildOptions{Output: "test/", Packages: []string{"package/foo", "package/bar"}}
|
||||
utils := newGolangBuildTestsUtils()
|
||||
utils.StdoutReturn = map[string]string{
|
||||
"go list -f {{ .Name }} package/foo": "main",
|
||||
"go list -f {{ .Name }} package/bar": "main",
|
||||
}
|
||||
ldflags := ""
|
||||
architecture, _ := multiarch.ParsePlatformString("windows,amd64")
|
||||
|
||||
binaryNames, err := runGolangBuildPerArchitecture(&config, utils, ldflags, architecture)
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, utils.Calls[0].Params, "list")
|
||||
assert.Contains(t, utils.Calls[0].Params, "package/foo")
|
||||
assert.Contains(t, utils.Calls[1].Params, "list")
|
||||
assert.Contains(t, utils.Calls[1].Params, "package/bar")
|
||||
|
||||
assert.Len(t, binaryNames, 2)
|
||||
assert.Contains(t, binaryNames, "test-windows-amd64/foo.exe")
|
||||
assert.Contains(t, binaryNames, "test-windows-amd64/bar.exe")
|
||||
})
|
||||
|
||||
t.Run("success - multiple mixed packages", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
config := golangBuildOptions{Output: "test/", Packages: []string{"package/foo", "package/bar"}}
|
||||
utils := newGolangBuildTestsUtils()
|
||||
utils.StdoutReturn = map[string]string{
|
||||
"go list -f {{ .Name }} package/foo": "main",
|
||||
"go list -f {{ .Name }} package/bar": "bar",
|
||||
}
|
||||
ldflags := ""
|
||||
architecture, _ := multiarch.ParsePlatformString("linux,amd64")
|
||||
|
||||
binaryNames, err := runGolangBuildPerArchitecture(&config, utils, ldflags, architecture)
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, utils.Calls[0].Params, "list")
|
||||
assert.Contains(t, utils.Calls[0].Params, "package/foo")
|
||||
assert.Contains(t, utils.Calls[1].Params, "list")
|
||||
assert.Contains(t, utils.Calls[1].Params, "package/bar")
|
||||
|
||||
assert.Len(t, binaryNames, 1)
|
||||
assert.Contains(t, binaryNames, "test-linux-amd64/foo")
|
||||
})
|
||||
|
||||
t.Run("execution error", func(t *testing.T) {
|
||||
|
Reference in New Issue
Block a user