databricks-cli/internal/helpers.go

67 lines
1.5 KiB
Go

package internal
import (
"bytes"
"fmt"
"math/rand"
"os"
"path/filepath"
"strings"
"testing"
"time"
"github.com/databricks/bricks/cmd/root"
"github.com/stretchr/testify/require"
)
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
// GetEnvOrSkipTest proceeds with test only with that env variable
func GetEnvOrSkipTest(t *testing.T, name string) string {
value := os.Getenv(name)
if value == "" {
t.Skipf("Environment variable %s is missing", name)
}
return value
}
// RandomName gives random name with optional prefix. e.g. qa.RandomName("tf-")
func RandomName(prefix ...string) string {
rand.Seed(time.Now().UnixNano())
randLen := 12
b := make([]byte, randLen)
for i := range b {
b[i] = charset[rand.Intn(randLen)]
}
if len(prefix) > 0 {
return fmt.Sprintf("%s%s", strings.Join(prefix, ""), b)
}
return string(b)
}
func run(t *testing.T, args ...string) (bytes.Buffer, bytes.Buffer, error) {
var stdout bytes.Buffer
var stderr bytes.Buffer
root := root.RootCmd
root.SetOut(&stdout)
root.SetErr(&stderr)
root.SetArgs(args)
_, err := root.ExecuteC()
if stdout.Len() > 0 {
t.Logf("[stdout]: %s", stdout.String())
}
if stderr.Len() > 0 {
t.Logf("[stderr]: %s", stderr.String())
}
return stdout, stderr, err
}
func writeFile(t *testing.T, name string, body string) string {
f, err := os.Create(filepath.Join(t.TempDir(), name))
require.NoError(t, err)
_, err = f.WriteString(body)
require.NoError(t, err)
f.Close()
return f.Name()
}