mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
1272b763f8
* create virtual env * adding bin bash source * using sources from bin bash * trying with bash * appending filename to source * using standard pip install * not using root user * adding path for pip * using virtual env * using virtual env name in path * removing virtual env * adding file path manually * using root * not using root and postpone removing venv * trying to use the python from venv * test to remove the venve * seeing which python * using symlink for python * unit test * python docu stub * fix unit test and yaml extra line * fixing unit test * unit test success case fix * unit test fix * unit test fixes * unit test and default publish flag * fix integration test Co-authored-by: anilkeshav27 <you@example.com>
116 lines
4.4 KiB
Go
116 lines
4.4 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
piperhttp "github.com/SAP/jenkins-library/pkg/http"
|
|
"github.com/SAP/jenkins-library/pkg/telemetry"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/SAP/jenkins-library/pkg/mock"
|
|
)
|
|
|
|
type pythonBuildMockUtils struct {
|
|
t *testing.T
|
|
config *pythonBuildOptions
|
|
*mock.ExecMockRunner
|
|
*mock.FilesMock
|
|
}
|
|
|
|
type puthonBuildMockUtils struct {
|
|
*mock.ExecMockRunner
|
|
*mock.FilesMock
|
|
|
|
clientOptions []piperhttp.ClientOptions // set by mock
|
|
fileUploads map[string]string // set by mock
|
|
}
|
|
|
|
func newPythonBuildTestsUtils() pythonBuildMockUtils {
|
|
utils := pythonBuildMockUtils{
|
|
ExecMockRunner: &mock.ExecMockRunner{},
|
|
FilesMock: &mock.FilesMock{},
|
|
}
|
|
return utils
|
|
}
|
|
|
|
func (f *pythonBuildMockUtils) GetConfig() *pythonBuildOptions {
|
|
return f.config
|
|
}
|
|
|
|
func TestRunPythonBuild(t *testing.T) {
|
|
cpe := pythonBuildCommonPipelineEnvironment{}
|
|
t.Run("success - build", func(t *testing.T) {
|
|
config := pythonBuildOptions{
|
|
VirutalEnvironmentName: "dummy",
|
|
}
|
|
utils := newPythonBuildTestsUtils()
|
|
telemetryData := telemetry.CustomData{}
|
|
|
|
runPythonBuild(&config, &telemetryData, utils, &cpe)
|
|
assert.Equal(t, "python3", utils.ExecMockRunner.Calls[0].Exec)
|
|
assert.Equal(t, []string{"-m", "venv", "dummy"}, utils.ExecMockRunner.Calls[0].Params)
|
|
})
|
|
|
|
t.Run("failure - build failure", func(t *testing.T) {
|
|
config := pythonBuildOptions{}
|
|
utils := newPythonBuildTestsUtils()
|
|
utils.ShouldFailOnCommand = map[string]error{"python setup.py sdist bdist_wheel": fmt.Errorf("build failure")}
|
|
telemetryData := telemetry.CustomData{}
|
|
|
|
err := runPythonBuild(&config, &telemetryData, utils, &cpe)
|
|
assert.EqualError(t, err, "Python build failed with error: build failure")
|
|
})
|
|
|
|
t.Run("success - publishes binaries", func(t *testing.T) {
|
|
config := pythonBuildOptions{
|
|
Publish: true,
|
|
TargetRepositoryURL: "https://my.target.repository.local",
|
|
TargetRepositoryUser: "user",
|
|
TargetRepositoryPassword: "password",
|
|
VirutalEnvironmentName: "dummy",
|
|
}
|
|
utils := newPythonBuildTestsUtils()
|
|
telemetryData := telemetry.CustomData{}
|
|
|
|
runPythonBuild(&config, &telemetryData, utils, &cpe)
|
|
assert.Equal(t, "python3", utils.ExecMockRunner.Calls[0].Exec)
|
|
assert.Equal(t, []string{"-m", "venv", config.VirutalEnvironmentName}, utils.ExecMockRunner.Calls[0].Params)
|
|
assert.Equal(t, "bash", utils.ExecMockRunner.Calls[1].Exec)
|
|
assert.Equal(t, []string{"-c", "source " + filepath.Join("dummy", "bin", "activate")}, utils.ExecMockRunner.Calls[1].Params)
|
|
assert.Equal(t, "python", utils.ExecMockRunner.Calls[2].Exec)
|
|
assert.Equal(t, []string{"setup.py", "sdist", "bdist_wheel"}, utils.ExecMockRunner.Calls[2].Params)
|
|
assert.Equal(t, filepath.Join("dummy", "bin", "pip"), utils.ExecMockRunner.Calls[3].Exec)
|
|
assert.Equal(t, []string{"install", "--upgrade", "twine"}, utils.ExecMockRunner.Calls[3].Params)
|
|
assert.Equal(t, filepath.Join("dummy", "bin", "twine"), utils.ExecMockRunner.Calls[4].Exec)
|
|
assert.Equal(t, []string{"upload", "--username", config.TargetRepositoryUser,
|
|
"--password", config.TargetRepositoryPassword, "--repository-url", config.TargetRepositoryURL,
|
|
"dist/*"}, utils.ExecMockRunner.Calls[4].Params)
|
|
})
|
|
|
|
t.Run("success - create BOM", func(t *testing.T) {
|
|
config := pythonBuildOptions{
|
|
CreateBOM: true,
|
|
Publish: false,
|
|
VirutalEnvironmentName: "dummy",
|
|
}
|
|
utils := newPythonBuildTestsUtils()
|
|
telemetryData := telemetry.CustomData{}
|
|
|
|
runPythonBuild(&config, &telemetryData, utils, &cpe)
|
|
// assert.NoError(t, err)
|
|
assert.Equal(t, "python3", utils.ExecMockRunner.Calls[0].Exec)
|
|
assert.Equal(t, []string{"-m", "venv", config.VirutalEnvironmentName}, utils.ExecMockRunner.Calls[0].Params)
|
|
assert.Equal(t, "bash", utils.ExecMockRunner.Calls[1].Exec)
|
|
assert.Equal(t, []string{"-c", "source " + filepath.Join("dummy", "bin", "activate")}, utils.ExecMockRunner.Calls[1].Params)
|
|
assert.Equal(t, "python", utils.ExecMockRunner.Calls[2].Exec)
|
|
assert.Equal(t, []string{"setup.py", "sdist", "bdist_wheel"}, utils.ExecMockRunner.Calls[2].Params)
|
|
assert.Equal(t, filepath.Join("dummy", "bin", "pip"), utils.ExecMockRunner.Calls[3].Exec)
|
|
assert.Equal(t, []string{"install", "--upgrade", "cyclonedx-bom"}, utils.ExecMockRunner.Calls[3].Params)
|
|
assert.Equal(t, filepath.Join("dummy", "bin", "cyclonedx-bom"), utils.ExecMockRunner.Calls[4].Exec)
|
|
assert.Equal(t, []string{"--e", "--output", "bom.xml"}, utils.ExecMockRunner.Calls[4].Params)
|
|
})
|
|
}
|