DockerCLI/internal/test/environment/testenv.go

79 lines
1.8 KiB
Go

package environment
import (
"os"
"strings"
"time"
"github.com/pkg/errors"
"gotest.tools/poll"
)
// Setup a new environment
func Setup() error {
dockerHost := os.Getenv("TEST_DOCKER_HOST")
if dockerHost == "" {
return errors.New("$TEST_DOCKER_HOST must be set")
}
if err := os.Setenv("DOCKER_HOST", dockerHost); err != nil {
return err
}
if dockerCertPath := os.Getenv("TEST_DOCKER_CERT_PATH"); dockerCertPath != "" {
if err := os.Setenv("DOCKER_CERT_PATH", dockerCertPath); err != nil {
return err
}
if err := os.Setenv("DOCKER_TLS_VERIFY", "1"); err != nil {
return err
}
}
if kubeConfig := os.Getenv("TEST_KUBECONFIG"); kubeConfig != "" {
if err := os.Setenv("KUBECONFIG", kubeConfig); err != nil {
return err
}
}
if val := boolFromString(os.Getenv("TEST_REMOTE_DAEMON")); val {
if err := os.Setenv("REMOTE_DAEMON", "1"); err != nil {
return err
}
}
if val := boolFromString(os.Getenv("TEST_SKIP_PLUGIN_TESTS")); val {
if err := os.Setenv("SKIP_PLUGIN_TESTS", "1"); err != nil {
return err
}
}
return nil
}
// KubernetesEnabled returns if Kubernetes testing is enabled
func KubernetesEnabled() bool {
return os.Getenv("KUBECONFIG") != ""
}
// RemoteDaemon returns true if running against a remote daemon
func RemoteDaemon() bool {
return os.Getenv("REMOTE_DAEMON") != ""
}
// SkipPluginTests returns if plugin tests should be skipped
func SkipPluginTests() bool {
return os.Getenv("SKIP_PLUGIN_TESTS") != ""
}
// boolFromString determines boolean value from string
func boolFromString(val string) bool {
switch strings.ToLower(val) {
case "true", "1":
return true
default:
return false
}
}
// DefaultPollSettings used with gotestyourself/poll
var DefaultPollSettings = poll.WithDelay(100 * time.Millisecond)