github.com/AliyunContainerService/cli@v0.0.0-20181009023821-814ced4b30d0/internal/test/environment/testenv.go (about) 1 package environment 2 3 import ( 4 "os" 5 "strings" 6 "testing" 7 "time" 8 9 "github.com/pkg/errors" 10 "gotest.tools/icmd" 11 "gotest.tools/poll" 12 "gotest.tools/skip" 13 ) 14 15 // Setup a new environment 16 func Setup() error { 17 dockerHost := os.Getenv("TEST_DOCKER_HOST") 18 if dockerHost == "" { 19 return errors.New("$TEST_DOCKER_HOST must be set") 20 } 21 if err := os.Setenv("DOCKER_HOST", dockerHost); err != nil { 22 return err 23 } 24 25 if dockerCertPath := os.Getenv("TEST_DOCKER_CERT_PATH"); dockerCertPath != "" { 26 if err := os.Setenv("DOCKER_CERT_PATH", dockerCertPath); err != nil { 27 return err 28 } 29 if err := os.Setenv("DOCKER_TLS_VERIFY", "1"); err != nil { 30 return err 31 } 32 } 33 34 if kubeConfig := os.Getenv("TEST_KUBECONFIG"); kubeConfig != "" { 35 if err := os.Setenv("KUBECONFIG", kubeConfig); err != nil { 36 return err 37 } 38 } 39 40 if val := boolFromString(os.Getenv("TEST_REMOTE_DAEMON")); val { 41 if err := os.Setenv("REMOTE_DAEMON", "1"); err != nil { 42 return err 43 } 44 } 45 46 if val := boolFromString(os.Getenv("TEST_SKIP_PLUGIN_TESTS")); val { 47 if err := os.Setenv("SKIP_PLUGIN_TESTS", "1"); err != nil { 48 return err 49 } 50 } 51 52 return nil 53 } 54 55 // KubernetesEnabled returns if Kubernetes testing is enabled 56 func KubernetesEnabled() bool { 57 return os.Getenv("KUBECONFIG") != "" 58 } 59 60 // RemoteDaemon returns true if running against a remote daemon 61 func RemoteDaemon() bool { 62 return os.Getenv("REMOTE_DAEMON") != "" 63 } 64 65 // SkipPluginTests returns if plugin tests should be skipped 66 func SkipPluginTests() bool { 67 return os.Getenv("SKIP_PLUGIN_TESTS") != "" 68 } 69 70 // boolFromString determines boolean value from string 71 func boolFromString(val string) bool { 72 switch strings.ToLower(val) { 73 case "true", "1": 74 return true 75 default: 76 return false 77 } 78 } 79 80 // DefaultPollSettings used with gotestyourself/poll 81 var DefaultPollSettings = poll.WithDelay(100 * time.Millisecond) 82 83 // SkipIfNotExperimentalDaemon returns whether the test docker daemon is in experimental mode 84 func SkipIfNotExperimentalDaemon(t *testing.T) { 85 t.Helper() 86 result := icmd.RunCmd(icmd.Command("docker", "info", "--format", "{{.ExperimentalBuild}}")) 87 result.Assert(t, icmd.Expected{Err: icmd.None}) 88 experimentalBuild := strings.TrimSpace(result.Stdout()) == "true" 89 skip.If(t, !experimentalBuild, "running against a non-experimental daemon") 90 }