mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
cb3fa7c293
* add sonarqube measurements * fetch measurements from API * add api for fetching issue counts * add debug outputs * add further severities * log number of issues * report failure * expose method to send request * Fixed what was broken. * add debug output * wip * correct opaque property * push client handling to apiClient.go * use correct API URL * correct log outputs * remove logging * remove option validation * extend search options * restructure * rename api client file * simplify client usage * simplify issue client * write sonar values to influx * extract issue service * reorder imports * add sonar integration test * allow unknown fields * add test case * add test case * remove * fix * Update http.go * Apply suggestions from code review * Update cmd/sonarExecuteScan.go * rework test cases * use explicit returns * add task service * add waitfortask * fix typo * remove fixme * expose poll interval * rename test cases * add test cases * use newAPIClient method * use waitForTask * rename services * finalize code * handle error * move defer * move types * add test case * use http.status... * add test case * expose api endpoint names * extract api client * adjust test cases * Update integration-tests-pr.yaml * Update integration-tests.yaml * improve require message * Update integration-tests-pr.yaml * Update integration-tests-pr.yaml
126 lines
2.7 KiB
Go
126 lines
2.7 KiB
Go
// +build integration
|
|
// can be execute with go test -tags=integration ./integration/...
|
|
|
|
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
"os"
|
|
"path"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/SAP/jenkins-library/pkg/command"
|
|
"github.com/SAP/jenkins-library/pkg/piperutils"
|
|
)
|
|
|
|
func TestPiperHelp(t *testing.T) {
|
|
t.Parallel()
|
|
piperHelpCmd := command.Command{}
|
|
|
|
var commandOutput bytes.Buffer
|
|
piperHelpCmd.Stdout(&commandOutput)
|
|
|
|
err := piperHelpCmd.RunExecutable(getPiperExecutable(), "--help")
|
|
|
|
assert.NoError(t, err, "Calling piper --help failed")
|
|
assert.Contains(t, commandOutput.String(), "Use \"piper [command] --help\" for more information about a command.")
|
|
}
|
|
|
|
func getPiperExecutable() string {
|
|
if p := os.Getenv("PIPER_INTEGRATION_EXECUTABLE"); len(p) > 0 {
|
|
fmt.Println("Piper executable for integration test: " + p)
|
|
return p
|
|
}
|
|
|
|
f := piperutils.Files{}
|
|
wd, _ := os.Getwd()
|
|
localPiper := path.Join(wd, "..", "piper")
|
|
exists, _ := f.FileExists(localPiper)
|
|
if exists {
|
|
fmt.Println("Piper executable for integration test: " + localPiper)
|
|
return localPiper
|
|
}
|
|
|
|
fmt.Println("Piper executable for integration test: Using 'piper' from PATH")
|
|
return "piper"
|
|
}
|
|
|
|
// copyDir copies a directory
|
|
func copyDir(source string, target string) error {
|
|
var err error
|
|
var fileInfo []os.FileInfo
|
|
var sourceInfo os.FileInfo
|
|
|
|
if sourceInfo, err = os.Stat(source); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err = os.MkdirAll(target, sourceInfo.Mode()); err != nil {
|
|
return err
|
|
}
|
|
|
|
if fileInfo, err = ioutil.ReadDir(source); err != nil {
|
|
return err
|
|
}
|
|
for _, info := range fileInfo {
|
|
sourcePath := path.Join(source, info.Name())
|
|
targetPath := path.Join(target, info.Name())
|
|
|
|
if info.IsDir() {
|
|
if err = copyDir(sourcePath, targetPath); err != nil {
|
|
return err
|
|
}
|
|
} else {
|
|
if err = copyFile(sourcePath, targetPath); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func copyFile(source, target string) error {
|
|
var err error
|
|
var sourceFile *os.File
|
|
var targetFile *os.File
|
|
var sourceInfo os.FileInfo
|
|
|
|
if sourceFile, err = os.Open(source); err != nil {
|
|
return err
|
|
}
|
|
defer sourceFile.Close()
|
|
|
|
if targetFile, err = os.Create(target); err != nil {
|
|
return err
|
|
}
|
|
defer targetFile.Close()
|
|
|
|
if _, err = io.Copy(targetFile, sourceFile); err != nil {
|
|
return err
|
|
}
|
|
if sourceInfo, err = os.Stat(source); err != nil {
|
|
return err
|
|
}
|
|
return os.Chmod(target, sourceInfo.Mode())
|
|
}
|
|
|
|
func createTmpDir(prefix string) (string, error) {
|
|
dirName := os.TempDir()
|
|
tmpDir, err := filepath.EvalSymlinks(dirName)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
tmpDir = filepath.Clean(tmpDir)
|
|
path, err := ioutil.TempDir(tmpDir, prefix)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return path, nil
|
|
}
|